由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - 不得不include cpp文件吗?C++奇怪的连接错误
相关主题
一个VC++ .net里编译C程序的问题动态连接库问题: 继承一个DLL导出的类
C++ template question with friend ostream请教一个弱弱问题,关于#include的pathname
调用win32 DLL的问题没完的“unresolved external symbol” in c++ compiling
问一个windows下编译openGL code的问题VS C++项目的Reference是干什么的?
c++ does not check const for extern variable?[菜鸟问题]类模板问题
Visual C++ 高手帮忙,一个Link Error请问const myClass &src 和myClass const &src有什么区别?
怎么隐藏c++template代码?只提供lib 不提供头文件一个partial specialization的问题
[合集] 关于C++ Class Template编程一问one template question
相关话题的讨论汇总
话题: project话题: atc话题: myclass话题: include话题: lnk2019
进入Programming版参与讨论
1 (共1页)
b*****d
发帖数: 7166
1
我用visual studio编译c++ solution, 内有多个project。
Project A:
a.h: 里面declare 一个template class, 比如叫做 ATC
a.cpp: 里面是template class具体的定义, 比如 ATC
Project B:
b.cpp: 这里要具体用到template class ATC的一个函数, 比如
ATC* e;
e->function()
在b.cpp 的开头 #include "xxx/a.h"
这时候编译产生
error LNK2019: unresolved external symbol ATC->function()
我的发现:
1. 同样的应用e->function(),在Project A中没有问题, 为什么在project B中不行?
2. 试过在a.cpp 里加一行 template class ATC; 不行,还是LNK2019
3. 试过dynamic_cast(ATC),不行还是LNK2019
4. 不能修改Project A,比如吧a.cpp的定义部分挪到a.h,不允许
5. 看了Project B的dependency, reference, 都有project A, 而且build 顺序是先
build project A.
6. 最后发现,在b.cpp 开头#include “a.cpp”; 编译就可以通过了。
但是我担心在project B里include cpp文件会在后面产生连接的问题。
请问 为什么project B里include a.h不行,但是在project A中可以?
include cpp 可以吗?谢谢。
h****e
发帖数: 2125
2
https://isocpp.org/wiki/faq/templates#separate-template-fn-defn-from-decl-
export-keyword

【在 b*****d 的大作中提到】
: 我用visual studio编译c++ solution, 内有多个project。
: Project A:
: a.h: 里面declare 一个template class, 比如叫做 ATC
: a.cpp: 里面是template class具体的定义, 比如 ATC
: Project B:
: b.cpp: 这里要具体用到template class ATC的一个函数, 比如
: ATC* e;
: e->function()
: 在b.cpp 的开头 #include "xxx/a.h"
: 这时候编译产生

1 (共1页)
进入Programming版参与讨论
相关主题
求助:一个Visual C++ 9.0下编译OpenGL code的问题c++ does not check const for extern variable?
请教一个用gsl库的问题Visual C++ 高手帮忙,一个Link Error
[合集] 又被羞辱了一把... (转载)怎么隐藏c++template代码?只提供lib 不提供头文件
Default function template arguments[合集] 关于C++ Class Template编程一问
一个VC++ .net里编译C程序的问题动态连接库问题: 继承一个DLL导出的类
C++ template question with friend ostream请教一个弱弱问题,关于#include的pathname
调用win32 DLL的问题没完的“unresolved external symbol” in c++ compiling
问一个windows下编译openGL code的问题VS C++项目的Reference是干什么的?
相关话题的讨论汇总
话题: project话题: atc话题: myclass话题: include话题: lnk2019