Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何避免VisualC++对我的DLL函数的名称进行篡改_C++_Visual Studio 2010_Dll_Vb6 - Fatal编程技术网

如何避免VisualC++对我的DLL函数的名称进行篡改

如何避免VisualC++对我的DLL函数的名称进行篡改,c++,visual-studio-2010,dll,vb6,C++,Visual Studio 2010,Dll,Vb6,我也有同样的问题。我使用Visual C++快件2010。 我试图声明extern C,并更改选项Project+Properties、Linker、Debug、Generate Debug Info=No。我的函数名在每次编译时都会被损坏 我将调用约定从StdCall更改为Cdecl,然后我的函数名在编译的dll中是正确的。但是我需要StdCall,因为在使用其他调用约定时,我使用的是来自VB6 VB6的dll。所以,每次我使用StdCall调用约定编译时,我的函数名都会再次被破坏 如何避免函

我也有同样的问题。我使用Visual C++快件2010。 我试图声明extern C,并更改选项Project+Properties、Linker、Debug、Generate Debug Info=No。我的函数名在每次编译时都会被损坏

我将调用约定从StdCall更改为Cdecl,然后我的函数名在编译的dll中是正确的。但是我需要StdCall,因为在使用其他调用约定时,我使用的是来自VB6 VB6的dll。所以,每次我使用StdCall调用约定编译时,我的函数名都会再次被破坏

如何避免函数名被StdCall调用约定弄乱?或者有没有一种方法可以使用VB6中的cdecl调用约定调用Dll中的函数?

在我发现可能无法避免使用StdCall调用约定造成名称混乱之后

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

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

当然,最好使用extern C,这样名称就不会被严重损坏。

如果名称看起来像_function@16那么它是正确的。我用这种格式获取名称,但VB6抱怨u和@字符: