【发布时间】: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 中的参考。