3

我已经构建了一个 dll,现在我想在 Microsoft Visual Studio 项目中使用这个 dll。

g++ -O0 -Wall -c -fmessage-length=0 -osrc\MyLib.o ..\src\MyLib.cpp
g++ -shared -Wl,--out-implib=MyLib.lib -Wl,--output-def=MyLib.def -oMyLib.dll src\MyLib.o -lwsock32

当我在“gcc 项目”中使用 dll 时,它可以正常工作。

我尝试了不同的方法来创建“.lib”和“.def”文件,并尝试按照不同的教程在 VS 中导入这些库。但是VS没有找到dll中声明的方法...

我很感激任何帮助。

4

3 回答 3

3

你听说过名字修饰吗?除非从 DLL 导出的函数被标记为 extern "C",否则它们的名称将以编译器特定的方式被破坏。因此问题。

于 2010-10-13T14:04:46.723 回答
1

为了他人的利益。看看 MinGW: Mixing Compilers and Binary Compatible C++ Interfaces。从上面可以清楚地看出,没有办法直接将使用 MinGW 构建的 C++ DLL 与 MS Visual Studio 接口。这种接口只能通过基于 C 的接口干净地“工作”。

于 2013-03-20T06:40:09.957 回答
1

如果您希望您的 dll 与另一个编译器一起使用,您有以下选项:

  1. 仅公开“C”接口(带有外部“C”)- 没有类或任何特定于 C++ 的。
  2. 制作一个 COM dll。
  3. 制作遵循相同约束的类似 COM 的模型。
于 2010-10-13T14:09:37.903 回答