【问题标题】:VC++ Multiple Project SolutionVC++ 多项目解决方案
【发布时间】:2014-05-08 19:58:56
【问题描述】:

我对 C++ 非常陌生,我正在尝试在 VS2013 的同一个解决方案中设置多个项目。目前我已经退回到一个更简单的示例项目来尝试找出我的错误。

项目 1:
主.cpp

 #include "Test.h"
 #include <iostream>

 using namespace std;

 int main() 
 {
     cout << _MOVEMENTSPEED();
     system("pause");
     return 0;
 }

项目 2 测试.h

 #ifndef TEST_H
 #define TEST_H

 int _MOVEMENTSPEED();

 #endif

Test.cpp

 #include "Test.h"

 int _MOVEMENTSPEED() 
 {
     return 10;
 }

每当我尝试构建它时,我都会收到错误“错误 LNK2019:无法解析的外部符号“int __cdecl _MOVEMENTSPEED(void)”(?_MOVEMENTSPEED@@YAHXZ) 在函数 _main c:\Users\Max\documents\visual studio 中引用2013\Projects\Project1\Project2\Main.obj”和“Error 2 error LNK1120: 1 unresolved externals c:\users\max\documents\visual studio 2013\Projects\Project1\Debug\Internal”。

更新 我在 Visual Studio 的一个项目文件中测试了相同的代码,它运行良好。

【问题讨论】:

  • 您注意到Test.cpp::_MOVEMENTSPEED() 中的前导下划线了吗?
  • 您的问题是未能将您的函数正确导出为 DLL 中的公开函数。搜索“exporting a function from a DLL”,您将获得 数百 次点击。
  • Test.h 和 Main.cpp 在同一个目录吗?可能不是 - 所以你需要用正确的路径更新 Main.cpp 中的#include "Test.h"。例如:#include "../Project2/Test.h"。或者,您可以将包含目录添加到项目 1 的属性中。
  • @MaxYoung 您的“Project2”类型是什么(可执行文件、静态库、动态库)?您是否将 Project1 链接到 Project2?
  • 在 Project1 的属性中,在链接器的选项下添加附加依赖项作为 Test.obj(带路径)。更好的方法是从 Project2 创建静态库并将 Project2 添加为 Project1 中的参考。

标签: visual-studio visual-c++


【解决方案1】:

当您创建多个项目时,您应该执行以下操作:

确保以下几点:

  1. 从其他项目中正确包含 .h 文件(通常每个项目都有自己的目录),因此您需要包含以下文件: #include "..\Test\Test.h"

  2. 使用_declspec(dllexport)_declspec(dllimport)

    导出函数/类李>
  3. 在“链接”选项卡的项目设置中正确包含 .lib 文件。

  4. 正确设置项目依赖关系。

以下链接应该对您有所帮助:

http://support.microsoft.com/kb/815650

http://msdn.microsoft.com/en-us/library/799kze2z.aspx

【讨论】:

    猜你喜欢
    • 2017-12-23
    • 2013-02-25
    • 1970-01-01
    • 2021-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多