这样的问题谁可以解释为什么?(vc连接dll给vb调用)
以下的问题有谁可以帮忙解释清楚??
////vc程序.cpp代码 vcdll.dll
char *cstr1="vb.exe??vc.dll你好!";
WCHAR *wstr1=L"vb.exe??vc.dll你好!";
//导出:void get_fun5_rva(int i)
extern "C" void _declspec(dllexport)get_fun5_rva(
int i//vb一个string类型地址
)
{
MessageBoxW(NULL,(WCHAR*)i,L"dll提示vb字符串信息",MB_OK);//第一次消息对话筐
WriteProcessMemory((void*)-1,(void *)i,(void*)cstr1,strlen(cstr1)+1,0);
MessageBoxA(NULL,(char*)i,"dll提示1",MB_OK);//第二次消息对话筐
//strcpy((char*)i,"dll提示vb字符串信息");
//MessageBoxA(NULL,"get_fun5_rva向vb写字符串调用vb函数完毕!","dll提示2",MB_OK);//第三次消息对话筐
}
////////////////////////////////////////////////////////////////////////////////////////
'vb程序普通模块代码
Public Declare Sub get_fun5_rva Lib "vcdll.dll" (ByVal i As Long)
Public cstr2 As String * 1024
'vb程序窗口代码
Private Sub Form_Load()
cstr2 = "你好!"
Dim i As Long
i = StrPtr(cstr2)
get_fun5_rva i
MsgBox cstr2, 0, "vb提示字符串信息" '第四次消息对话筐
End Sub
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
程序运行结果是:
第一次消息对话筐的内容是:“你好!(后面加了不可显示的字符)”
第二次消息对话筐的内容是:“vb.exe??vc.dll你好!”
第四次消息对话筐的内容是:“你好!(后面加了不可显示的字符)”此次有疑问?
按我想的,用WriteProcessMemory给vb的cstr2 As String写字符串:“vb.exe??vc.dll你好!”是成功的,可是为什么第四次消息对话筐的内容还是:“你好!(后面加了不可显示的字符)”
不是我想的:“vb.exe??vc.dll你好!”呢?