请高手解答一下,宽字符的Dll参数调用怎么会出错?编译不过.

huamoran 2008-05-22 10:29:26
代码如下.

dll中定义

void __declspec(dllexport) GetStringName(wchar_t* getStr)
{
getStr = L"ssssssssssss";
}

MFC中声明
#pragma comment(lib, "debug/TestWCharDll.lib")
void __declspec(dllimport) GetStringName(wchar_t* getStr);
void __declspec(dllimport) resetName(string& namestr);

调用:
wchar_t tempbuf[20]={(L"sssssssssssss")};
GetStringName(tempbuf);

编译错误:
TestWcharInDll error LNK2019: unresolved external symbol "__declspec(dllimport) void __cdecl GetStringName(wchar_t *)" (__imp_?GetStringName@@YAXPA_W@Z) referenced in function "public: void __thiscall CTestWcharInDllDlg::OnBnClickedOk(void)" (?OnBnClickedOk@CTestWcharInDllDlg@@QAEXXZ)

请高手解答一下.
...全文
112 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
长尾巴的悟空 2008-05-22
  • 打赏
  • 举报
回复
呵呵..那就好!
huamoran 2008-05-22
  • 打赏
  • 举报
回复
我知道了. C++有关键字wchar_t  而C没有 它是自定义的 #typedefin unsiged short wchar_t.

统一调用加上:


extern "C" {


就行了.
huamoran 2008-05-22
  • 打赏
  • 举报
回复
我用的VS2005
huamoran 2008-05-22
  • 打赏
  • 举报
回复
都是C++, dll 用的c++ 标准dll.
buyong 2008-05-22
  • 打赏
  • 举报
回复
VC6打sp6
huamoran 2008-05-22
  • 打赏
  • 举报
回复
目录是对的. 若改成把wchar_t 改成 char 就完全没有问题.
huamoran 2008-05-22
  • 打赏
  • 举报
回复
函数要实现取值应该这样. GetStringName(wchar_t*& getStr)   我这里只是想测一下宽字符. 
困挠很久了.
huamoran 2008-05-22
  • 打赏
  • 举报
回复
函数要实现取值应该这样. GetStringName(wchar_t*& getStr)   我这里只是想测一下宽字符. 
困挠很久了.
mooling 2008-05-22
  • 打赏
  • 举报
回复
是不是你的dll是使用c写的啊??

因为感觉是你的符号找不到诶
还有就是那个
#pragma comment(lib, "debug/TestWCharDll.lib")
中的lib的目录是对的吗????

15,466

社区成员

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

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