VC++添加ZThread,无法解析的外部符号,请帮忙解决!
在VC++项目中的“附加包含目录”中将ZThread的include和src路径加入。包含头文件:
#include "zthread/Thread.h"
#include "zthread/Runnable.h"
没有问题。
但当创建Thread对象时出现“无法解析的外部符号”的错误。如下
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: virtual __thiscall ZThread::Thread::~Thread(void)" (??1Thread@ZThread@@UAE@XZ),该符号在函数 _main 中被引用
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall ZThread::Thread::Thread(class ZThread::Task const &,bool)" (??0Thread@ZThread@@QAE@ABVTask@1@_N@Z),该符号在函数 _main 中被引用
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: unsigned int __thiscall ZThread::AtomicCount::operator--(void)" (??FAtomicCount@ZThread@@QAEIXZ),该符号在函数 "public: __thiscall ZThread::CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount>::~CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount>(void)" (??1?$CountedPtr@VRunnable@ZThread@@VAtomicCount@2@@ZThread@@QAE@XZ) 中被引用
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall ZThread::AtomicCount::~AtomicCount(void)" (??1AtomicCount@ZThread@@QAE@XZ),该符号在函数 "public: void * __thiscall ZThread::AtomicCount::`scalar deleting destructor'(unsigned int)" (??_GAtomicCount@ZThread@@QAEPAXI@Z) 中被引用
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: unsigned int __thiscall ZThread::AtomicCount::operator++(int)" (??EAtomicCount@ZThread@@QAEIH@Z),该符号在函数 "public: __thiscall ZThread::CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount>::CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount><class LiftOff>(class LiftOff *)" (??$?0VLiftOff@@@?$CountedPtr@VRunnable@ZThread@@VAtomicCount@2@@ZThread@@QAE@PAVLiftOff@@@Z) 中被引用
1>XuPro.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall ZThread::AtomicCount::AtomicCount(void)" (??0AtomicCount@ZThread@@QAE@XZ),该符号在函数 "public: __thiscall ZThread::CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount>::CountedPtr<class ZThread::Runnable,class ZThread::AtomicCount><class LiftOff>(class LiftOff *)" (??$?0VLiftOff@@@?$CountedPtr@VRunnable@ZThread@@VAtomicCount@2@@ZThread@@QAE@PAVLiftOff@@@Z) 中被引用
源程序如下:
#ifndef LIFF_OFF
#define LIFF_OFF
//namespace com{
#include <iostream>
#include "zthread/Runnable.h"
class LiftOff:public ZThread::Runnable{
int countDown;
int id;
public:
LiftOff(int count,int idnt=0):countDown(count),id(idnt){}
~LiftOff(){
std::cout << "~LiftOff:" << id << ":" << countDown << std::endl;
}
void run(){//重写
while(countDown--){
std::cout << id<<":"<<countDown<< std::endl;
}
std::cout << "Liftoff" << std::endl;
}
};
//}
#endif
#include <iostream>
#include "LiftOff.h"
#include "zthread/Thread.h"
//using namespace com;
using namespace std;
using namespace ZThread;
int main()
{
try{
Thread t(new LiftOff(10));
cout << "waiting for Liftoff" << endl;
}catch(Synchronization_Exception& e){
cerr << e.what() << endl;
}
///++++++++++++++++
cin.clear();
cin.get();
return 0;
}
请各位高人帮忙解决一下,否则无法编译。
谢谢!
[解决办法]
是不是有什么lib 没有连接啊?
或者有些函数是C的
extern "C"
{
#include "zthread/Thread.h"
#include "zthread/Runnable.h"
}
[解决办法]
额,你仅仅包含头文件,那么实现部分呢?
要么是CPP,要么是lib;一般找不到实现部分入口,才会这么报
如果是lib 在工程属性->链接->输入 中填写lib
或者 在使用lib的cpp 中增加
#pragma comment (lib,"lib文件的完整路径文件名")
[解决办法]
问题就是出现在你没有包含LIB.CPP文件吧1! 或者就是你修改了内容 没有更新.h文件。