【发布时间】:2017-02-27 23:59:59
【问题描述】:
我很少有其他人产品的库,也很少有我的库(dll 和标头)。 为了更好地构建我的项目(并且只是为了增加我的知识),我想将 dll 放在其他目录中(不是带有 exe 的目录)。
据我所知,Windows 仅在 exedir 和 sysdir 中使用 dll(查找 exe 的 dll)。 此外,存在可以帮助我的 regkeys,但它是 PATH var 的全局解决方案。
1.我可以将 exe 与一些 dll 链接,这些 dll 位于关于 exe 的较低层次结构的 dir 中?怎么样?
另外,我想用于这个 MinGW。
我没有找到关于我的问题的足够信息,我找到了链接器的这个 g++ 键:-Wl,-rpath-link,...; -Wl,-rpath,...;
2。我可以用这个键在 Windows 上用 MinGW 解决我的问题吗?怎么样?
我试过这个:g++ -Wl,-rpath-link,.\out\lib\ -Wl,-rpath,.\lib\ -L .\out\lib\ -l:foolib.dll main.o -o out\main.exe
但只有将 dll 放在 exedir 中,我仍然可以运行 exe 而不会出错。
所以,我找到了 arg(?) $ORIGIN for -Wl,-rpath,...,据我所知,它是某个 obj 文件的 workdir 的完整路径吗?还是不行?
3. $ORIGIN 是什么?我应该\我可以用它来解决我的问题吗?
对不起我的英语。提前谢谢你。
【问题讨论】: