碰到“error LNK2019: 无法解析的外部符号”
2011-12-22 00:17
316 查看
有一个解决方案,有两个工程A,B。工程B中定义了一个类,在工程A的demo.cpp中引用该类,但是如果是
#include "XX,h",则会出现“error LNK2019: 无法解析的外部符号”
如果是#include "XX.cpp",则可以顺利编译通过。
想来是因为引用 .h 文件导致找不到.cpp中的定义,而引用.cpp可以通过.cpp找到.h(.cpp有对.h的include)
但是如果同在工程B下面,则#include "XX,h"也是正确的,它会自动关联到同名的(反正是对应的).cpp文件。
在不同工程中应该如何引用呢?
看见一种原因分析,如下:
现场情况:
funcname 在文件file.cpp/h中定义实现
void funcname(void) {;}
filecall.c文件内呼叫funcname()函数。
出现上面情况。
症因:因c/c++混合编程, c文件内函数无法呼叫c++文件内函数。
解决,或者将c文件名改为.cpp,或者将c++文件名改为.c
上面的解决采用将 file.cpp 更名为file.c即可。
#include "XX,h",则会出现“error LNK2019: 无法解析的外部符号”
如果是#include "XX.cpp",则可以顺利编译通过。
想来是因为引用 .h 文件导致找不到.cpp中的定义,而引用.cpp可以通过.cpp找到.h(.cpp有对.h的include)
但是如果同在工程B下面,则#include "XX,h"也是正确的,它会自动关联到同名的(反正是对应的).cpp文件。
在不同工程中应该如何引用呢?
看见一种原因分析,如下:
现场情况:
funcname 在文件file.cpp/h中定义实现
void funcname(void) {;}
filecall.c文件内呼叫funcname()函数。
出现上面情况。
症因:因c/c++混合编程, c文件内函数无法呼叫c++文件内函数。
解决,或者将c文件名改为.cpp,或者将c++文件名改为.c
上面的解决采用将 file.cpp 更名为file.c即可。
相关文章推荐
- 碰到“error LNK2019: 无法解析的外部符号”
- 碰到“error LNK2019: 无法解析的外部符号”
- error LNK2019: 无法解析的外部符号
- error LNK2019: 无法解析的外部符号(编程解决方法)(改)
- error LNK2019: 无法解析的外部符号 _InsertList
- error LNK2019: 无法解析的外部符号 __imp_GetUserObjectInformationW,该符号在函数 OPENSSL_isservice 中被引用
- error LNK2019: 无法解析的外部符号 "public: __thiscall Date::~Date(void)" (??1Date@@QAE@XZ),该符号在函数 _main 中被引用
- “error LNK2019: 无法解析的外部符号”之分析
- 有关C++模板(template)的编译错误“error LNK2019: 无法解析的外部符号”的分析
- error LNK2019: 无法解析的外部符号 cocos2d
- 使用DLL引起的error LNK2019: 无法解析的外部符号
- 1>opencv_test1.obj : error LNK2019: 无法解析的外部符号_cvReleaseImage,该符号在函数_main 中被引用
- error LNK2019: 无法解析的外部符号 "__declspec(dllimport)
- "error LNK2019: 无法解析的外部符号"错误的解决办法
- error LNK2019: 无法解析的外部符号
- VC++常规错误之一:error LNK2019: 无法解析的外部符号 "public: void __thiscall
- VS2015下解决:error LNK2019: 无法解析的外部符号 __iob_func
- error LNK2019: 无法解析的外部符号CCScrollView * __cdecl cocos2d::extension::CCScrollView::create(void)
- error LNK2019: 无法解析的外部符号 _auxDIBImageLoadA@4
- error LNK2019: 无法解析的外部符号 ___ucl_init2;error LNK2019: 无法解析的外部符号 _ucl_version