nex*_*tes 3 c++ linker visual-studio
简短的问题是:如何使用Visual Studio创建/编译/运行在不同目录中具有源代码的项目.
以下是具体细节:
我在一个目录中有一个类定义文件(.hpp)和实现文件(.cpp),我在另一个目录中有一个main.cpp文件.在Visual Studio 2008中,我创建了一个新项目并将main.cpp放在该项目中.我将类文件目录添加到Additional Include Directories(右键单击项目 - >项目属性 - > Configuration Properties - C/C++ - General - > Additional Include Directories = C:\ Test\cpp).
当我这样做时,intellisense在编辑main.cpp时工作正常.当我构建项目时,它编译得很好,但我得到链接错误,例如:
错误LNK2019:函数_main中引用的未解析的外部符号"public:int __thiscall Test :: add(int)"(?add @ Test @@ QAEHH @ Z).
据我所知,Visual Studio实际上并没有编译Test.cpp(我没有看到为它制作任何.obj文件).我在编译/构建main.cpp之前尝试过编译它,但这没有任何区别.有没有解决的办法?当我在网上搜索答案时,我看到很多人忘记为链接器包含库,但我没有处理任何库.
我还通过将Test.hpp和Test.cpp移动到与main.cpp相同的目录来验证此代码编译和运行正确 - 这没有任何问题.我会坚持使用该设置,但我需要能够使用来自不同目录的源代码来处理我正在进行的项目.
这是3个文件:
C:\测试\ CPP\Test.hpp
#ifndef TEST_H
#define TEST_H
class Test
{
private:
int mynum;
public:
Test();
int add(int num);
};
#endif //TEST_H
Run Code Online (Sandbox Code Playgroud)C:\测试\ CPP\Test.cpp的
#include "Test.hpp"
Test::Test()
{
mynum = 0;
}
int Test::add(int num)
{
return mynum += num;
}
Run Code Online (Sandbox Code Playgroud)C:\ Visual Studio Projects\MyProject\main.cpp
#include <iostream>
#include <Test\Test\Test.hpp>
int main(int argc, char *argv[])
{
Test test;
std::cout << "Add 5 = " << test.add(5) << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)最重要的是你必须编译Test.cpp并以某种方式与它链接.两种选择:
在第二种情况下,您可以在VisualStudio中拥有依赖项目.这样它将正确地拉出适当的Debug/Release /等.构建主项目时的lib版本.它也会从正确的文件夹中获取它.例如,无需手动处理链接器设置.
| 归档时间: |
|
| 查看次数: |
5680 次 |
| 最近记录: |