51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2565|回复: 2
打印 上一主题 下一主题

怎么使用字符串?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2005-3-2 16:15:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
写了个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 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏

该用户从未签到

2#
发表于 2005-3-2 17:48:03 | 只看该作者
- -
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2005-3-3 15:40:56 | 只看该作者
问题解决。是自己WR中extern函数写得不规范(因为用普通变量的时候随便写都可以),应该这样:
extern int GetPWINHostInfo(out int, out string<128>);
string<128>数组也就当作指针来用了(本来就是指针)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-22 15:28 , Processed in 0.071402 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表