如何将DLL或LIB导出到MinGW .a文件以获得正确的链接

时间:2019-06-23 05:52:20

标签: c++ c dll mingw lib

我想使用.a从DLL导出的文件来链接C ++程序,我得到的完整档案是:标头,DLL文件和VC ++构建的LIB。 现在我使用pexports和dlltool将DLL函数导出到.a库中:

pexports some.dll -o > some.def
dlltool --dllname some.dll --def some.def --output-lib some.a

当我与some.a链接时,我从编译器中得到了错误:

  [Linker error] undefined reference to `some_function@8' 

所以我查看了如下定义的some.def文件:

LIBRARY "some.dll"
EXPORTS
some_function  @1
some_function2 @2

然后我决定切换到另一种方法来从VC ++构建的.LIB文件中导出.a文件:

reimp some.lib
dlltool -d some.def -l libsome.a

然后我使用libsome.a正确链接,因为some.def的定义如下:

LIBRARY "some.dll"
EXPORTS
some_function  @8  --> ( param size? )
some_function2 @24

但是当我运行程序时,出现运行时错误: 在some.dll上找不到条目地址“ some_function @ 8” ...

为什么从DLL文件和LIB文件导出.a的结果不同?我该如何解决这个问题?谢谢。

0 个答案:

没有答案