请问高手?为何我的DLL函数返回的是乱七八糟的字符

sunyuan_01 2003-01-04 11:35:14
extern "C" _declspec(dllexport) LPCSTR GetId()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
unsigned long s1,s2;
CString strCpuId1,strCpuId2;
__asm
{
mov eax,01h
xor edx,edx
cpuid
mov s1,edx
mov s2,eax
}
strCpuId1.Format("%08X\n%08X-",s1,s2);
__asm
{
mov eax,03h
xor ecx,ecx
xor edx,edx
cpuid
mov s1,edx
mov s2,ecx
}
strCpuId2.Format("%08X\n%08X-",s1,s2);
return (LPCSTR)(strCpuId1+strCpuId2);//这里的变量正常
}

在程序中调用后返回的是乱字符
why?...
...全文
19 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunyuan_01 2003-01-05
  • 打赏
  • 举报
回复
是的,return 后是没了
好了现在结贴
wangan 2003-01-05
  • 打赏
  • 举报
回复
CString strCpuId1,strCpuId2;
是栈变量,return 后已经析构掉了
serverclient 2003-01-05
  • 打赏
  • 举报
回复
呵呵,返回值可以使用
CString& 试一试?!
rivershan 2003-01-05
  • 打赏
  • 举报
回复
哦~
应该是这样~
:)
还是不要用CString~
sunyuan_01 2003-01-04
  • 打赏
  • 举报
回复
to everandforever
好!
高手高手
好像是这样的我来试试看
everandforever 2003-01-04
  • 打赏
  • 举报
回复
还是 CHAR[] 这种方法比较保守.而且CHAR[]由调用的程序创建,然后传地址进来.
everandforever 2003-01-04
  • 打赏
  • 举报
回复
return (LPCSTR)(strCpuId1+strCpuId2);//这里的变量正常
————————————————————
大约生成了一个临时CSTRING变量,然后去取其内容的地址.但是这个CSTRING马上被析构.内容也就没有啦.
sunyuan_01 2003-01-04
  • 打赏
  • 举报
回复
我也试了还是不行呀
rivershan 2003-01-04
  • 打赏
  • 举报
回复
CString 是MFC中的类~
建议你直接声明
LPCSTR strCpuId1,strCpuId2;
不知行不行~?
sunyuan_01 2003-01-04
  • 打赏
  • 举报
回复
to 笨猫

我试了去除LPCSTR直接返回CString类型还不行不知啥回事
但不在DLL中是有用的呀
rivershan 2003-01-04
  • 打赏
  • 举报
回复
CString strCpuId1,strCpuId2;
CString to LPCSTR?
应该有函数的吧~
强制转换行吗?
我不是很清楚~!
sunyuan_01 2003-01-04
  • 打赏
  • 举报
回复
各位大哥分不够可以加呀

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧