【发布时间】:2012-02-08 10:17:30
【问题描述】:
我正在尝试在 C++/CLI 中做一些非常简单的事情,但是我在使用 Visual Studio 时遇到了问题,我不知道为什么。
我有两个项目,一个包含一个名为 JNIUtils.h 的头文件。它的内容非常简单——
#pragma once
class JNIUtils
{
public:
JNIUtils( void );
~JNIUtils( void );
};
而且它的实现也很简单-
#include "stdafx.h"
#include "JNIUtils.h"
JNIUtils::JNIUtils( void )
{
}
JNIUtils::~JNIUtils( void )
{
}
我要做的只是在另一个项目中创建一个这种新定义类型的对象。在我包含这个头文件的项目中,我去了
项目属性 > 配置属性 > VC++ 目录 > 包含目录
我添加了一个条目,其中包含我包含的头文件所在的路径 (JNIUtils.h)
我试图在其中创建此对象的实例的 CPP 文件如下所示:
#include "stdafx.h"
#include "JNIUtils.h"
using namespace System;
int main(array<System::String ^> ^args)
{
JNIUtils *util = new JNIUtils();
Console::WriteLine(L"Hello World");
return 0;
}
当我尝试编译时出现以下错误:
Error 3 error LNK1120: 2 unresolved externals C:\zcarter\UDK\WebSvcClients\Debug\JNITester.exe JNITester
Error 2 error LNK2019: unresolved external symbol "public: __thiscall JNIUtils::JNIUtils(void)" (??0JNIUtils@@$$FQAE@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) C:\zcarter\UDK\WebSvcClients\JNITester\JNITester.obj JNITester
Error 1 error LNK2028: unresolved token (0A000009) "public: __thiscall JNIUtils::JNIUtils(void)" (??0JNIUtils@@$$FQAE@XZ) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z) C:\zcarter\UDK\WebSvcClients\JNITester\JNITester.obj JNITester
谁能告诉我我在这里做错了什么?
【问题讨论】:
-
通常您需要使用包含其他目标文件的目标文件或库。
-
你能告诉我在哪里添加 obj 文件吗?没有lib文件...
-
您能指定您使用的 Visual Studio 版本吗?
-
当你编译 JNIUtils.cpp 时,你会得到一个 JNIUtils.o,你需要将该文件提供给链接器。头文件只提供函数的原型,编译够用,不能链接
标签: .net compilation linker c++-cli