标准库错误error LNK2019: unresolved external symbol

Kaliven 2004-07-23 03:01:35
用到一个第三方的头文件和lib文件,整合到项目中间出现
error LNK2001: unresolved external symbol "__declspec(dllimport) public: char * __thiscall std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >::begin(void)" (__imp_?begin@?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@QAEPADXZ)


按说这种问题是应该是lib文件链接不正确时候出的错误,一般是库的路径不对才会出现。
但是这错误是标准库的错误。我的其他使用标准库的程序正常,项目的路径也是设置正常。请问有什么方法可以改正这个错误呢!
...全文
4751 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kaliven 2004-07-26
  • 打赏
  • 举报
回复
差库!没连接吧
差库我当然知道是差库,问题是stl库,怎么可能差。vc自己带的啊。

PM确认问题了,第三方连接stl库的时候使用的是动态连接的方式,而VC默认的是静态的方式。nnd不知道那帮yankee搞什么飞机,版本代码管理这么混乱。让他们重新编译一个版本过来。
sharkhuang 2004-07-24
  • 打赏
  • 举报
回复
差库!没连接吧
kaphoon 2004-07-23
  • 打赏
  • 举报
回复
是这样的,和corba有关
但是你可以从中找出线索
因为你的错误也是
__declspec(dllimport)
std::basic_string....
这个东西~~
Kaliven 2004-07-23
  • 打赏
  • 举报
回复
/Od /I "." /I "../../include" /I "../../ClusterShell/CluSvcLib" /D "_DEBUG" /D "WIN32" /D "_CONSOLE" /D "UNICODE" /D "_UNICODE" /FD /EHsc /RTC1 /MD /GS /Yu"stdafx.h" /Fp".\Debug/TemplateService.pch" /Fo".\Debug/" /Fd".\Debug/" /FR".\Debug/" /W3 /nologo /c /Zi

这是编译选项必要的库都加进去了
Kaliven 2004-07-23
  • 打赏
  • 举报
回复
Using the snapshot from the website you must link wih the
micocoss239.lib (static, no dll).

这个是google搜索出来的结果,我看了看的好像是一个人用mico 一个cobra开源不能编译
有人回答他的
kaphoon 2004-07-23
  • 打赏
  • 举报
回复
你也可以看一下程序的整个运行过程,链接了什么库,用了什么编译选项
kaphoon 2004-07-23
  • 打赏
  • 举报
回复
Using the snapshot from the website you must link wih the
micocoss239.lib (static, no dll).
Kaliven 2004-07-23
  • 打赏
  • 举报
回复
能够一起分析一下问题吗?注意到你是星了应该是老手!

首先LNK2001是缺乏声明,由于std是没有用lib的,所以说编译的时候应该是编译成obj然后再连接的,而不是通过外部的lib连接这样就不应该存在运行期的问题。你觉得我理解的怎么样!

这个程序是第三方给我们的一个服务的模板,类似于windows Service的一个服务。直接编译就出问题了,因为是内部外包,所以最好能够先自己解决!
freefalcon 2004-07-23
  • 打赏
  • 举报
回复
我记得当初是这样解决的,可惜没有记录问题的习惯,以后得好好注意了...

你可以联系一下你们的第三方
Kaliven 2004-07-23
  • 打赏
  • 举报
回复
问题依旧,有其他可能性吗?
freefalcon 2004-07-23
  • 打赏
  • 举报
回复
这个问题我遇到过,原因是运行期库不统一,你试试改变project>settings>c/c++>code generation>use run-time library中的设置,总有一个能让你通过编译,:)
VC 6.0常见安装错误 VC调试常见错误 程序设计到多线程,VC++6.0默认设置可作以下修改: project->settings->C/C++->Category中选Code Generation->Use Run-time Library选Debug MultiThreaded或MultiThreaded 在创建MFC项目时, 不使用MFC AppWizard向导, 如果没有设置好项目参数, 就会在编译时产生很多连接错误, 如error LNK2001错误, 典型的错误提示有: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __beginthreadex nafxcwd.lib(thrdcore.obj) : error LNK2001: unresolved external symbol __endthreadex 下面介绍解决的方法: 1. Windows子系统设置错误, 提示: libcmtd.lib(crt0.obj) : error LNK2001: unresolved external symbol _main Windows项目要使用Windows子系统, 而不是Console, 可以这样设置: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:console改成/subsystem:windows 2. Console子系统设置错误, 提示: LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16 控制台项目要使用Console子系统, 而不是Windows, 设置: [Project] --> [Settings] --> 选择"Link"属性页, 在Project Options中将/subsystem:windows改成/subsystem:console 3. 程序入口设置错误, 提示: msvcrtd.lib(crtexew.obj) : error LNK2001: unresolved external symbol _WinMain@16 通常, MFC项目的程序入口函数是WinMain, 如果编译项目的Unicode版本, 程序入口必须改为wWinMainCRTStartup, 所以需要重新设置程序入口: [Project] --> [Settings] --> 选择"C/C++"属性页, 在Category中选择Output, 再在Entry-point symbol中填入wWinMainCRTStartup, 即可 4. 线程运行时库设置错误, 提示:

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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