Mingw的管理/出口问题

时间:2011-02-21 09:04:40

标签: c++ visual-c++ export mingw name-mangling

我正在Windows下使用Netbeans和MinGW处理共享C ++ DLL。

我的第一个问题是:MinGW和Microsoft Visual C ++之间会不一致? 我读到mangling是编译器特定的 - 是真的吗?我需要使用MinGW获得与MVC ++相同的修改,这有可能吗?

我发现,使用Dependency Walker,导出的函数也被视为C(在我的代码中它们不会导出为C)。这是否取决于DepWalker的限制或由于某种原因MinGW使我的库导出为C? (我确认使用“导出C”我不再看到错误了,而没有,我看到名称错误(这与我期望的基于MVC ++的不同)但我仍然看到“C”图标而不是“C ++” ”

这是链接命令:

g++.exe -static-libgcc -static-libstdc++ -shared -o my.dll -s 1.o 2.o ... n.o other.dll -static

提前感谢和最诚挚的问候。

1 个答案:

答案 0 :(得分:6)

是的,名称修改是特定于编译器的。它甚至可以在同一编译器的版本之间进行更改。

你永远不应该期待任何关于破损的事情,并且应该将它视为一个黑盒子 - 永远不要依赖它是相同或不同的。

如果需要编译器间链接,请使用extern "C"