51Testing软件测试论坛

标题: 怎么使用字符串? [打印本页]

作者: shyfish    时间: 2005-3-2 16:15
标题: 怎么使用字符串?
写了个dll,导出函数如下:
extern "C" __declspec(dllexport) BOOL GetPWINHostInfo(int& hostID, char* exeDir)
{
        AFX_MANAGE_STATE(AfxGetStaticModuleState());
        CRegistry registry;
        if(!registry.Open("SOFTWARE\\PCHostID"))
        {
                CInputDlg dlg;
                if(dlg.DoModal() == IDOK)
                {
                        hostID = dlg.m_nHostID;
                        strncpy( exeDir, dlg.m_strDir, strlen( dlg.m_strDir ) );
                }
        }
        else
                registry.Close();
        return TRUE;
}
用VC来使用这个DLL没有问题:(省略写的)
int host;
char dir[50];  //这儿一定要先初始化指针
GetPWINHostInfo(host, dir);
但是用WR就出现问题了:
extern int GetPWINHostInfo(int, string<128>);
static host, dir;
load_dll("E:\\works\\VC\\PCDLL\\Release\\PCDLL.dll");
msg = GetPWINHostInfo(host, dir);
pause(msg);
load_dll("E:\\works\\VC\\PCDLL\\Release\\PCDLL.dll");
问题报错,然后异常结束,WR也跟着出现问题。导出函数里不用字符串就不会出现问题。怎么解决?WR只是类C,好像没办法用指针啊

[ Last edited by shyfish on 2005-3-3 at 12:35 ]
作者: 生如火花    时间: 2005-3-2 17:48
- -
作者: shyfish    时间: 2005-3-3 15:40
问题解决。是自己WR中extern函数写得不规范(因为用普通变量的时候随便写都可以),应该这样:
extern int GetPWINHostInfo(out int, out string<128>);
string<128>数组也就当作指针来用了(本来就是指针)




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2