随着我的应用程序的增长,我发现自己使用了越来越多的第三方库,并且我的应用程序目录中的.dll数量正在增长(撰写本文时为11)。这本身并不是一个问题,但它很难看。我更愿意将这些内容放在“bin/
”或其他内容中。
这可以做到,还是我把时间浪费在一些不是真正的问题上?
唯一的真正的优势,这将使我能够将exe的x86和x64版本放在同一目录中,并从dll的相应文件夹({{1例如,}或bin32/
。
我正在使用C ++和MinGW-W64。
答案 0 :(得分:1)
您可以使用GNU链接器的-rpath
标志。
例如,这将在本地目录中搜索依赖dll:-Wl,-rpath,./
特别针对您的情况,您需要:-Wl,-rpath,./bin
答案 1 :(得分:0)
以下链接很好地解释了DLL搜索顺序 引用:
在系统搜索DLL之前,它会检查以下内容:
如果已在内存中加载具有相同模块名称的DLL,则系统将使用加载的DLL,无论它在哪个目录中。系统不会搜索DLL。
如果DLL位于运行应用程序的Windows版本的已知DLL列表中,则系统将使用其已知DLL(以及已知DLL的相关DLL,如果有)的副本。系统不会搜索DLL 有关当前系统上已知DLL的列表,请参阅以下注册表项:HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Control \ Session Manager \ KnownDLLs。
您可以参考使用SetDllDirectory添加自定义搜索目录。