如何避免Visual c++混淆我的DLL函数的名称

How to avoid Visual C++ from mangling the names of my DLL functions

本文关键字:函数 DLL 我的 何避免 Visual c++      更新时间:2023-10-16

我在这里暴露了同样的问题。我用的是Visual c++ Express 2010。

我试着声明extern"C",并改变选项项目+属性,链接器,调试,生成调试信息= No。我的函数名在每次编译时都被打乱了。

看完jjones的回答后,我将调用约定从StdCall改为Cdecl,然后我的函数名称在编译的dll中是正确的。但我需要StdCall,因为我使用这个dll从VB6 (VB6抗议时使用其他调用约定)。所以,每次我用StdCall调用约定进行编译时,我的函数名又被打乱了。

我怎样才能避免我的函数名与StdCall调用约定混淆?或者有一种方法来调用一个函数在Dll与cdecl调用约定从VB6?

在阅读和阅读之后,我发现(也许)没有办法避免与StdCall调用约定的名称混淆。

我想从VB6调用我的函数,所以这里有一个实际工作的解决方案:使用别名声明函数:

Declare Function prettyname Lib "mydll.dll" Alias "_prettyname@16" () As Integer

当然,最好使用extern "C",这样名字就不会被弄乱。