我想实现这样一个效果:
我用VC编写了个DLL ,VB 调用里面的一个函数,返回给VB一个字符串,
目前要不就是乱码,要不就是崩溃!我查了网上很多资料,都没有成功 !
请大虾们99999我啊 !
例子如下:
VC:
SQLCE3_DRIVER_API BSTR TestString(LPCTSTR InStr)
{
CString Buf;
Buf = "测试用例";
return Buf.AllocSysString();
}
VB:
Private Declare Function TestString Lib "Sqlce3_Driver.dll" Alias "?TestString@@YAPA_WPB_W@Z" (ByVal strS As String) As String
Dim a As String
a = TestString("这个参数没有意义")
输入一个已经初始化好的字符串缓冲区地址,及其长度.
然后DLL里向那个缓冲区写入内容,并返回实际写入的长度.
参考GetComputerName的用法.
能不能帮我写个例子呢 ,我很少用VB。谢谢了 ~
SQLCE3_DRIVER_API 是什么?VC我不熟.
但一般是声明为WINAPI,VB只支持stdCall.
把例子里的Buf内容复制到输入的InStr指针里.
再加个参数,大约如下:
C/C++ code:
WINAPI INT TestString(LPCTSTR InStr,int StrLength)
{
CString Buf;
Buf = "测试用例";
memcpy instr,&buf,sizeof(buf); '这里要复制,语法不知道对不对
return sizeof(buf);
}
VB里面:
Private Sub btnPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnPrint.Click
MouseWait()
Dim ClearTempTabelSQL As String
'If Not ......