VC编写DLL PB取字符串不正确
VC定义如下:
extern "C" _declspec(dllexport) __int64 __stdcall Hello(BSTR* x)
{
*x=::SysAllocString(L"1");
__int64 c=0;
return c;
}
PB引用:
public function integer Hello(ref string xyz) library "Hello.DLL" alias for "Hello"
string z
Hello(z)
得到z="";
在C#中引用这函数正常.
把BSTR* 改为 char** 也不行.
[解决办法]
VC定义如下:
extern "C " _declspec(dllexport) __int64 __stdcall Hello(BSTR* x)
vc定义的函数返回值是 __int64
PB引用:
public function integer Hello(ref string xyz) library "Hello.DLL " alias for "Hello "
声明的返回值是integer .integer 应该32位整型变量。。
把pb引用改成
public function long Hello(ref string xyz) library "Hello.DLL " alias for "Hello "
试试看。。
[解决办法]
返回值是会影响的.在32位的编译器上 返回一个 int 和 __int64代码会差别很多的.