VS同一个解决方案中不同项目相互引用问题

作者最近也是遇到了需要在一个c++项目中引用另一个项目的类库的情况。遇到一些问题分享给大家。
项目如下:

我想要在orbit项目中引用core项目的类库:
(1)在orbit项目中添加core项目的引用:右键orbit项目的引用->添加引用->选择core项目即可。
如果缺少此步骤会报如下错误:

2>cNoradSDP4.obj : error LNK2001: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::sqr(double)" (?sqr@OrbitTools@Zeptomoby@@YANN@Z)
2>cNoradSGP4.obj : error LNK2001: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::sqr(double)" (?sqr@OrbitTools@Zeptomoby@@YANN@Z)
2>cOrbit.obj : error LNK2001: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::sqr(double)" (?sqr@OrbitTools@Zeptomoby@@YANN@Z)
2>cNoradBase.obj : error LNK2019: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::Fmod2p(double)" (?Fmod2p@OrbitTools@Zeptomoby@@YANN@Z),该符号在函数 "protected: class Zeptomoby::OrbitTools::cEciTime __cdecl Zeptomoby::OrbitTools::cNoradBase::FinalPosition(double,double,double,double,double,double,double,double)" (?FinalPosition@cNoradBase@OrbitTools@Zeptomoby@@IEAA?AVcEciTime@23@NNNNNNNN@Z) 中被引用
2>cNoradSDP4.obj : error LNK2001: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::Fmod2p(double)" (?Fmod2p@OrbitTools@Zeptomoby@@YANN@Z)
2>cNoradBase.obj : error LNK2019: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::AcTan(double,double)" (?AcTan@OrbitTools@Zeptomoby@@YANNN@Z),该符号在函数 "protected: class Zeptomoby::OrbitTools::cEciTime __cdecl Zeptomoby::OrbitTools::cNoradBase::FinalPosition(double,double,double,double,double,double,double,double)" (?FinalPosition@cNoradBase@OrbitTools@Zeptomoby@@IEAA?AVcEciTime@23@NNNNNNNN@Z) 中被引用
2>cNoradSDP4.obj : error LNK2001: 无法解析的外部符号 "double __cdecl Zeptomoby::OrbitTools::AcTan(double,double)" (?AcTan@OrbitTools@Zeptomoby@@YANNN@Z)
2>cNoradBase.obj : error LNK2019: 无法解析的外部符号 "protected: void __cdecl Zeptomoby::OrbitTools::cJulian::Initialize(int,double)" (?Initialize@cJulian@OrbitTools@Zeptomoby@@IEAAXHN@Z),该符号在函数 "public: __cdecl Zeptomoby::OrbitTools::cJulian::cJulian(void)" (??0cJulian@OrbitTools@Zeptomoby@@QEAA@XZ) 中被引用
2>cOrbit.obj : error LNK2001: 无法解析的外部符号 "protected: void __cdecl Zeptomoby::OrbitTools::cJulian::Initialize(int,double)" (?Initialize@cJulian@OrbitTools@Zeptomoby@@IEAAXHN@Z)
2>cNoradBase.obj : error LNK2019: 无法解析的外部符号 "public: double __cdecl Zeptomoby::OrbitTools::cVector::Magnitude(void)const " (?Magnitude@cVector@OrbitTools@Zeptomoby@@QEBANXZ),该符号在函数 "protected: class Zeptomoby::OrbitTools::cEciTime __cdecl Zeptomoby::OrbitTools::cNoradBase::FinalPosition(double,double,double,double,double,double,double,double)" (?FinalPosition@cNoradBase@OrbitTools@Zeptomoby@@IEAA?AVcEciTime@23@NNNNNNNN@Z) 中被引用
2>cNoradBase.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl Zeptomoby::OrbitTools::cEciTime::cEciTime(class Zeptomoby::OrbitTools::cVector const &,class Zeptomoby::OrbitTools::cVector const &,class Zeptomoby::OrbitTools::cJulian)" (??0cEciTime@OrbitTools@Zeptomoby@@QEAA@AEBVcVector@12@0VcJulian@12@@Z),该符号在函数 "protected: class Zeptomoby::OrbitTools::cEciTime __cdecl Zeptomoby::OrbitTools::cNoradBase::FinalPosition(double,double,double,double,double,double,double,double)" (?FinalPosition@cNoradBase@OrbitTools@Zeptomoby@@IEAA?AVcEciTime@23@NNNNNNNN@Z) 中被引用
2>cNoradSDP4.obj : error LNK2019: 无法解析的外部符号 "public: double __cdecl Zeptomoby::OrbitTools::cJulian::ToGmst(void)const " (?ToGmst@cJulian@OrbitTools@Zeptomoby@@QEBANXZ),该符号在函数 "public: __cdecl Zeptomoby::OrbitTools::cNoradSDP4::cNoradSDP4(class Zeptomoby::OrbitTools::cOrbit const &)" (??0cNoradSDP4@OrbitTools@Zeptomoby@@QEAA@AEBVcOrbit@12@@Z) 中被引用
2>cOrbit.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl Zeptomoby::OrbitTools::cJulian::cJulian(int,double)" (??0cJulian@OrbitTools@Zeptomoby@@QEAA@HN@Z),该符号在函数 "public: __cdecl Zeptomoby::OrbitTools::cOrbit::cOrbit(class Zeptomoby::OrbitTools::cTle const &)" (??0cOrbit@OrbitTools@Zeptomoby@@QEAA@AEBVcTle@12@@Z) 中被引用
2>cOrbit.obj : error LNK2019: 无法解析的外部符号 "public: void __cdecl Zeptomoby::OrbitTools::cVector::Mul(double)" (?Mul@cVector@OrbitTools@Zeptomoby@@QEAAXN@Z),该符号在函数 "public: void __cdecl Zeptomoby::OrbitTools::cEci::ScalePosVector(double)" (?ScalePosVector@cEci@OrbitTools@Zeptomoby@@QEAAXN@Z) 中被引用
2>cOrbit.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl Zeptomoby::OrbitTools::cTle::cTle(class Zeptomoby::OrbitTools::cTle const &)" (??0cTle@OrbitTools@Zeptomoby@@QEAA@AEBV012@@Z),该符号在函数 "public: __cdecl Zeptomoby::OrbitTools::cOrbit::cOrbit(class Zeptomoby::OrbitTools::cOrbit const &)" (??0cOrbit@OrbitTools@Zeptomoby@@QEAA@AEBV012@@Z) 中被引用
2>cOrbit.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl Zeptomoby::OrbitTools::cTle::~cTle(void)" (??1cTle@OrbitTools@Zeptomoby@@QEAA@XZ),该符号在函数 "int `public: __cdecl Zeptomoby::OrbitTools::cOrbit::cOrbit(class OrbitTools::cOrbit::dtor$0 const &)'::`1'::dtor$0" (?dtor$0@?0???0cOrbit@OrbitTools@Zeptomoby@@QEAA@AEBV012@@Z@4HA) 中被引用
2>cOrbit.obj : error LNK2019: 无法解析的外部符号 "public: double __cdecl Zeptomoby::OrbitTools::cTle::GetField(enum Zeptomoby::OrbitTools::cTle::eField,enum Zeptomoby::OrbitTools::cTle::eUnits,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > *,bool)const " (?GetField@cTle@OrbitTools@Zeptomoby@@QEBANW4eField@123@W4eUnits@123@PEAV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@_N@Z),该符号在函数 "public: __cdecl Zeptomoby::OrbitTools::cOrbit::cOrbit(class Zeptomoby::OrbitTools::cTle const &)" (??0cOrbit@OrbitTools@Zeptomoby@@QEAA@AEBVcTle@12@@Z) 中被引用
2>C:\Users\wxj233\Desktop\tlePredict\tlePredict\x64\Debug\orbit.dll : fatal error LNK1120: 12 个无法解析的外部命令

各种函数无法被解析。

(2)添加外部依赖:右键orbit项目->属性,按下图顺序选择(注意选择realease还是debug版本),将core项目的头文件目录添加上即可。
 

(3)设置项目的配置类型:一般创建项目时配置类型为.exe,这里我们需要将core项目的配置类型改为静态库.lib,关于.lib和.dll的区别,.lib用于编译.dll用于运行,详情请读者自行百度。orbit项目由于我是要.dll库所以我设置orbit项目配置类型为.dll。依然实在项目属性页配置,选择常规。
 

请读者注意realease和debug配置和你实际编译版本需要一致,不一致还是会报错。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

楼兰小石头

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值