【发布时间】:2013-10-03 11:26:55
【问题描述】:
我有一个windows dll(主应用程序直接加载这个windows dll)链接到另外2个dll,这些dll是通过使用mingw32交叉编译获得的。
我在这个链接上遇到了一个奇怪的问题。
假设我在第一个交叉编译的 dll funcA_firstdll() 和 funcB_firstdll() 中有 2 个函数 同样,我在第二个交叉编译的 dll funcC_secdll() 和 funcD_secdll() 中有 2 个函数。 与 windows 主 dll 链接时,我没有收到任何链接器错误,但 dll 没有被加载。
所以如果我使用dependency walker检查windows dll的依赖关系,我会看到第一个和第二个交叉编译的dll都是红色的。
当我单击第一个交叉编译的 dll 时,我看到该 dll(funcA_firstdll() 和 funcB_firstdll())中的函数为绿色,第二个交叉 dll(funcC_secdll() 和 funcD_secdll())为红色。 同样,当我单击第二个交叉编译的 dll 时,我看到该 dll 中存在的函数(funcC_secdll() 和 funcD_secdll())为绿色,第一个交叉 dll 为红色。
我无法理解为什么它们不能相互链接。 有没有不同的方法来链接交叉编译的 dll。
感谢任何帮助。
问候,
Techtotie。
【问题讨论】:
-
自己解决了。这实际上是一个问题,由 mingw 生成的代理库没有被 MSVC 正确解释。所以也必须生成def文件。按照本教程mingw.org/wiki/MSVC_and_MinGW_DLLs
标签: windows dll cross-compiling dllimport mingw32