前几天在.net framework4下实现了VB调用VC++Dll的一些工作,然而,每当VC的被调用函数返回时总是报错,如题。。
原函数声明如下:extern ”C“__declspec(dllexport) void tt(int num);VB中调用如下:Public Declare Sub tt Lib "**.dll" (ByVal intnum As Integer)
google之……找到了一些解决方案:
1.有人说是参数类型传递错误,提出了一些在VB中将integer修改为int16、int32,将VC++中的int*在VB中使用IntPtr等方案。结果无用。
2.看到有人建议好好读一读这个错误。在相关解决方案中了解了_cdecl 和_stdcall是神码??(毕竟不是计算机出身啊,这些可能是基础知识吧)。http://www.cnitblog.com/sonery/archive/2008/02/19/39925.html有比较详细的介绍。读了一下错误认为是VB调用后参数堆栈的释放方式比较不一致,即该函数调用约定
(calling convention)没设定好。于是我按照一些人建议的修改如下extern ”C“