如何避免Visual C ++破坏我的DLL函数的名称

时间:2014-08-01 17:06:16

标签: c++ visual-studio-2010 dll vb6

我有同样的问题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中的函数?

1 个答案:

答案 0 :(得分:0)

reading and reading之后我发现(也许)没有办法避免使用StdCall调用约定进行名称修改。

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

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

当然,最好使用extern "C",因此这些名称不会受到严重破坏。