[英]Lesson needed on how to work with files in different projects in C++
我現在已經能夠在同一個項目中工作了一段時間,編寫並成功運行了c ++代碼。 但是,我發現我仍然缺少有關如何將.h文件導出到另一個項目並在其中成功使用它們的一些基本知識。
我創建了第二個項目,即項目B,以測試項目A中的類。 視覺c ++:來自同一解決方案中其他項目的#include文件我將Project A中頭文件的路徑添加到Project B的項目配置中的Additional Include Directories(C \\ C ++> general and Linker> general)部分。 我嘗試遵循此頁面上的教程http://msdn.microsoft.com/zh-cn/library/ms235636.aspx,但仍然遇到以下錯誤
**鏈接:致命錯誤LNK1104:無法打開文件'C:\\ Users \\ LaC \\ Projects \\ OSGB \\ Debug \\ OSGB.lib **
我希望能幫助您確切地了解如何完成此操作,以便將來在遇到此問題時,可以知道如何進行故障排除。
下面的代碼是我正在使用的全部代碼。
IN PROJECT A
=============
//Utility.h
class Utility
{
private:
protected:
public:
Utility(void);
~Utility(void);
double square_root (const double);
};
//Utility.cpp
#include "StdAfx.h"
#include "Utility.h"
Utility::Utility(void)
{
//do nothing for now
}
Utility::~Utility(void)
{
//do nothing for now
}
double Utility::square_root (const double)
{
return 0;
}
IN PROJECT B
===============
#include "gtest/gtest.h"
#include "Utility.h"
TEST (SquareRootTest, PositiveNos) {
Utility u;
EXPECT_EQ (50.3321, u.square_root (2533.310224));
}
有兩種(通用)方法可以將文件包含到項目中:
如果使它們成為項目的一部分,則必須添加標頭和源文件才能正確編譯項目。 但是,這通常不是您想要執行的操作,因為它違反了擁有外部庫的目的。
第二種情況是使用外部庫,這需要您:
要么
所以請記住:構建C ++項目有兩個部分- 編譯和鏈接 。
編譯器錯誤:
如果遇到錯誤,其代碼以C*
開頭(例如C1083),並且與文件的問題標頭相關,請檢查“屬性”->“ C / C ++”->“常規”->“附加包含目錄”。
鏈接器錯誤:
如果您收到錯誤代碼以LNK*
開頭的錯誤,請檢查
如果要動態鏈接,請檢查是否正確引用了DLL。
因此,在您的情況下,您必須確定要靜態還是動態鏈接,然后進行適當的引用。 因此,您知道從動態庫還是靜態庫獲取這些頭文件?
當鏈接器為駐留在另一個庫(DLL或共享庫)中的符號發出unresolved external symbol
,這表明您需要將應用程序鏈接到該另一個庫的.lib文件。 這很可能是這里發生的事情。
有關更多信息,請參見:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.