windows dll shared rpath

¿Hay un Windows/MSVC equivalente al indicador del enlazador-rpath?



dll shared (3)

Lamentablemente, no existe una analogía directa con RPATH. Hay una serie de posibilidades alternativas, cada una de ellas muy probablemente indeseable para usted de una manera especial.

Dado que necesita un exe diferente para cada sabor de compilación de todos modos para evitar enfrentamientos en la biblioteca de tiempo de ejecución, como se puede adivinar, lo más fácil es colocar cada archivo ejecutable en la misma carpeta que cada conjunto de archivos DLL.

Como también mencionó, el método más universal es cambiar la variable PATH utilizando un archivo por lotes para arrancar el exe.

En su lugar, podría cambiar el directorio de trabajo actual antes de ejecutar el programa en la carpeta DLL deseada.

Puede usar la función SetDllDirectory o AddDllDirectory dentro de su exe. Este es probablemente el más cercano a un RPATH, pero solo funciona en WinXP SP1 o posterior.

Si está dispuesto a modificar el nombre de archivo de cada sabor de exe, puede usar la clave de registro "Rutas de la aplicación". Cada exe necesitaría un nombre de archivo único.

En Linux / GCC, puedo usar el indicador -rpath para cambiar una ruta de búsqueda de ejecutables para bibliotecas compartidas sin templar con variables de entorno.

¿Esto también se puede lograr en Windows? Hasta donde yo sé, los dlls siempre se buscan en el directorio del ejecutable y en PATH.

Mi escenario: me gustaría poner bibliotecas compartidas en ubicaciones de acuerdo a sus propiedades (32 / 64bit / Debug / Release) sin tener en cuenta nombres únicos. En Linux, esto se puede hacer fácilmente a través de rpath, pero aún no he encontrado ninguna forma de hacerlo en Windows.

Gracias por cualquier pista!