inline函数编译报错的奇怪问题!

DIAOZUXIN 2008-06-19 03:18:22
我写了两个内联函数,声明放到了一个头文件里,实现放到了源文件里,编译通过,链接失败,提示说找不到对应的函数obj,提示如下:
LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts with use of other libs; use /NODEFAULTLIB:library
hzSrc.obj : error LNK2019: unresolved external symbol "class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl GetWStr(wchar_t *)" (?GetWStr@@YA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@PA_W@Z) referenced in function _wmain
hzSrc.obj : error LNK2019: unresolved external symbol "wchar_t * __cdecl CharToWideChar(char *)" (?CharToWideChar@@YAPA_WPAD@Z) referenced in function _wmain;

我的两个内联函数如下:

inline wstring GetWStr(wchar_t * pWch);


inline wchar_t* CharToWideChar(char* str);


我内联函数的定义如下:
inline string WideCharToString(CString str)
{
wchar_t *pw = str.GetBuffer() ;
int nLength = WideCharToMultiByte(CP_ACP, 0, pw, -1, NULL,0,NULL,NULL);
char *ch = new char[nLength];
WideCharToMultiByte(CP_ACP, 0, pw, -1, ch, nLength, NULL, NULL);
str.ReleaseBuffer();
string sch = ch;
delete [] ch;
return sch;
}

inline wstring GetWStr(wchar_t * pWch)
{
wstring wstr = pWch;
return wstr;

}


然后在main中的调用如下:
char * pch = "测试测试nnd";
wchar_t *pw1 = CharToWideChar(pch);
wstring sss = GetWStr(pw1);
编译就抛这个错,实在不明白啊!

...全文
381 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
jieao111 2008-06-20
  • 打赏
  • 举报
回复
绝不要用inline
---huber sutter
DIAOZUXIN 2008-06-20
  • 打赏
  • 举报
回复
我看的是钱能的 标准c++教程,没有提示该放哪里,多谢了,散分了!
  • 打赏
  • 举报
回复
1,内联函数要放在头文件中;
2,声明不要加关键字inline;
zhouhang251 2008-06-19
  • 打赏
  • 举报
回复
内敛 必须是编译时 可见的。所以内敛必须放在头文件。详细请看primer(第四版) p374,最上方。
solar 2008-06-19
  • 打赏
  • 举报
回复
inline函数不一定真的inline
artman 2008-06-19
  • 打赏
  • 举报
回复
inline函数在编译的时候需要将函数实现插入到代码中,而非后期连接,所以必须知道函数实现.
把它想成宏定义就好理解了.
DIAOZUXIN 2008-06-19
  • 打赏
  • 举报
回复
不是吧,实现和声明都要放到头文件里?
不过这样确实能解决问题!等我再试一下,就结贴!
K行天下 2008-06-19
  • 打赏
  • 举报
回复
实现也放进头文件!!!!!!!
  • 打赏
  • 举报
回复
都inline了还不舍得把实现放到头文件中?
langhua0001 2008-06-19
  • 打赏
  • 举报
回复
内联函数是有限制的 至少你第一个函数不适合做内联

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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