我有同样的问题exposed here。我正在使用Visual C ++ Express 2010。
我尝试声明extern“C”,并更改选项Project + Properties,Linker,Debugging,Generate Debug Info = No.我的函数名称在每次编译时都会被修改。
After reading the answer of jjones我将调用约定从StdCall更改为Cdecl,然后我的函数名在编译后的dll中是正确的。但我需要StdCall,因为我正在使用VB6中的这个DLL(当使用其他调用约定时Vb6抗议)。因此,每次使用StdCall调用约定进行编译时,我的函数名称都会再次被破坏。
如何避免我的函数名被StdCall调用约定所破坏?或者有没有办法用VB6中的cdecl调用约定来调用Dll中的函数?
答案 0 :(得分:0)
在reading and reading之后我发现(也许)没有办法避免使用StdCall调用约定进行名称修改。
我想从VB6调用我的函数,所以这是一个实际工作的解决方法: 用别名声明函数:
Declare Function prettyname Lib "mydll.dll" Alias "_prettyname@16" () As Integer
当然,最好使用extern "C"
,因此这些名称不会受到严重破坏。