16

更新:编译时收到此警告:找到具有不同属性的多个“.text”部分

你好,

我使用 MinGW Cross Compiler 在 Linux 中编译了一些库(.a 和 .dll)。我可以在 Visual Studio 2008 中成功链接它们 (.a)。但是,当它运行时(使用 .dll),它以指向空内存地址的地址指针终止。

有没有办法/清单可以让我在 VC08 中成功使用这些库?

交叉编译器生成

  1. *.dll.a
  2. *.dll

谢谢

4

2 回答 2

7

找到了。

http://www.mingw.org/wiki/MSVC_and_MinGW_DLLs

你必须有一个 def 文件并使用 VC 的 lib 工具来生成一个导入库。

于 2009-08-18T18:59:20.747 回答
3

在我看来,双方没有使用相同的调用约定,这意味着导出的 dll 函数的定义方式存在问题。

到目前为止,最简单的方法是将函数定义为extern "C",方法是如下定义导出的函数:

extern "C"
{
  int  MyExportedFunction(char *buffer, int length);
  void MyOtherFunction();
};
于 2009-08-18T03:24:55.757 回答