转:
http://blog.sina.com.cn/s/blog_5d890d070100fpj1.html
1、缺少libc.lib
解决这个问题的方法是去掉链接到libc.lib,具体地点:项目-〉属性-〉配置属性-〉链接器-〉忽略特定库。
2、unresolved external symbol __iob
这个__iob找不到的问题费了我大部分的时间。跟踪到stdio.h文件,发现那里有个关于iob的宏,终于搞定。加入一句话到.cpp文件中:extern "C" { FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]}; }
3、NULL iterator
STL已经不能有NULL迭代器这么一说了,想想也对,在NULL迭代器上进行++或--之类的是不成立的。
4、结构体默认函数
在VC6中,结构体的默认运算符==或者<之类的如果不实现也可以作为STL元素放入list等容器中。但VC8不行了,因为它已经不再为结构体生成缺省的操作符函数。
该错误主要是由于静态库在VC6编译而主程序在VC2005编译,大家用的CRT不同。解决办法,代码中增加
#ifdef __cplusplus
extern "C"
#endif
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
此错误的产生根源:
在VC6的stdio.h之中有如下定义
_CRTIMP extern FILE _iob[];
#define stdin (&_iob[0])
#define stdout (&_iob[1])
#define stderr (&_iob[2])
stdin、stdout、stderr是通过查_iob数组得到的。所以,VC6编译的程序、静态库只要用到了printf、scanf之类的函数,都要链接_iob数组。
而在vc2005中,stdio.h中变成了
_CRTIMP FILE * __cdecl __iob_func(void);
#define stdin (&__iob_func()[0])
#define stdout (&__iob_func()[1])
#define stderr (&__iob_func()[2])
_iob数组不再是显式的暴露出来了,需要调用__iob_func()函数获得。所以vc6的静态库链接VC2005的C运行库就会找不到_iob数组.
通过重新定义
FILE _iob[3] = {__iob_func()[0], __iob_func()[1], __iob_func()[2]};
就把vc6需要用到的_iob数组搞出来了
分享到:
相关推荐
在压缩包中的`LNK2001 无法解析的外部符号 int __cdecl sprintf 在“附加依赖项”属性中添加 msvcrt.lib.txt`文件,很可能是提供了一个指导,告诉你如何在你的项目设置中添加`msvcrt.lib`来解决这个问题。...
1>save-image-D435.obj : error LNK2001: 无法解析的外部符号 “private: char * __cdecl cv::String::allocate(unsigned __int64)” (?allocate@String@cv@@AEAAPEAD_K@Z) 1>save-image-D435.obj : error LNK2001: ...
1文本的绘制 2绘制线条 3绘制矩形 4绘制圆和椭圆 5绘制圆角矩形 6绘制多边形 7动画效果 8抓屏实验
解决 error LNK2001: unresolved external symbol 在编译VC项目时,经常会遇到error LNK2001: unresolved external symbol的错误,这个错误是由于缺少某些库文件而引起的。在这里,我们总结了三种常见的情形,并...
了解并掌握这些知识点,对于理解和解决"LNK2019: 无法解析的外部符号"这类问题至关重要。在实际编程中,遇到此类问题时,应首先从上述方面进行排查,多数情况下都能找到问题的根源并予以解决。同时,良好的编程习惯...
综上所述,解决LNK2019错误需要仔细检查程序代码,确认每一个外部符号的定义是否存在,以及是否正确地包含了它们的声明。此外,还需要检查链接器的配置,确保所有需要的库都已被正确链接。进行这些检查之后,通常...
C++调用C函数实例详解 前言:以前见到extern “C”这样的语句,只是简单地知道跟外部链接有关...Test.obj : error LNK2019: 无法解析的外部符号 “void __cdecl DeleteStack(struct _Node *)” (?DeleteStack@@YAXPAU_N
如果出现以下错误: ...1>libcurld.lib(openssl.obj) : error LNK2019: 无法解析的外部符号 _sk_num,该符号在函数 _cert_stuff 中被引用 ............... 则应添加对 ssleay32.lib 和 libeay32.lib 的引用
解决这个问题的步骤如下: 1. **备份原文件**:在进行任何修改之前,务必先备份系统文件夹中的原始ODBCCP32.dll,以防万一操作出错可以恢复。 2. **下载新版本**:您可以从提供的"DLL下载.url"链接获取最新或兼容...
如果问题仍然存在,检查错误消息中的详细信息,它会提供无法解析的特定符号,这有助于确定问题的具体来源。同时,查阅相关的技术博客和文档,如 “vs2010静态生成exe - 乘舟凉 - 博客园.url” 中的资源,也能提供有...
python 版本3.3 系统:windows 问题:链接时报告 1>pythonIniti.obj : error LNK2019: 无法解析的外部符号 __imp___Py_...1>pythonIniti.obj : error LNK2001: 无法解析的外部符号 __imp___Py_RefTotal 解
在VC++编程环境中,当你遇到"error LNK2019: 无法解析的外部符号"的错误时,这通常意味着编译器在链接阶段找不到某个函数或变量的定义。这个错误是链接器(Linker)发出的,因为它在已编译的对象文件或库中找不到在...
error LNK2005: DllMain already defined in corelibc.lib(dllmain.obj)的解决方案
在使用不同版本opencv时,编译器有时会报错,error LNK1104 无法打开文件opencv_core245d.lib,本文给出了详细的解决方法,实测有效
解决报错Error LNK2001:unresolved external symbol
### vc中error LNK2001 resolved external symbol _WinMain@16的解决方法...通过以上步骤,可以有效地解决`error LNK2001: unresolved external symbol _WinMain@16`的问题,并确保Windows应用程序能够正常编译和运行。
error LNK2019: 无法解析的外部符号 NtClose,该符号在函数 mdb_env_map 中被引用 D:\google-jar\liblmdb \mdb.obj error LNK2019: 无法解析的外部符号 NtCreateSection,该符号在函数 mdb_env_map 中被引用 D:\...
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) 已经在 libcmtd.lib(typinfo.obj) 中定义...
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: ...