【发布时间】:2010-08-25 19:02:11
【问题描述】:
在我的应用程序中,我必须明确链接到一个 dll。该应用程序在 QT 中,带有 gcc 编译器。
应用程序必须链接到的 dll 是另一个旧 dll 的包装器。目的是使旧的 dll 适合新的界面。
我在编译新的 dll 时使用隐式链接。新的dll是用msvc 2008编译的。原因是旧的dll有c++类函数,gcc无法识别。新接口使用 c 函数。
所以大局是,当我运行我的应用程序时,我链接了新的 dll,而新的 dll 依赖于旧的 dll。一切正常,除了我必须将旧 dll 放在与 exe 相同的文件夹或与 .pro 文件相同的文件夹中。
我尝试将旧库添加到应用程序的 qt .pro 文件中,但没有成功。
有什么办法可以移动旧dll文件的目录吗?
为了更清楚地说明,如果旧的 dll 和应用程序是使用相同的编译器编译的,我可以在 .pro 文件中包含旧 dll 和 lib 的路径并将其放在我想要的任何位置。
但是,现在,只有新的 dll 可以识别旧的 dll 函数,所以我不能再这样做了。我想知道是否有办法修改exe文件在运行时搜索的路径。现在它搜索exe 文件夹及其父文件夹。
【问题讨论】:
-
我不明白这个问题,为什么必须移动它?你给了它一个不同的名字,对吧?
-
我希望它与其他库一起在 lib 文件夹中,而不是在自动生成且通常不包含在源代码控制管理软件中的调试或发布文件夹中。换句话说,我只是不认为 dll 应该在那里。