【问题标题】:Link a C++/CLI library in a CLR console project在 CLR 控制台项目中链接 C++/CLI 库
【发布时间】:2012-02-25 11:36:00
【问题描述】:

我在一个问题上看到无法链接静态 C++/CLI 库,因此我生成了一个动态库并尝试将其链接到 C++ CLR 控制台项目中,但没有成功 我得到: 错误 1 ​​错误 LNK2020:未解析的令牌 (06000001) cBox::.ctor pTest9.obj
我把dll(项目->引用->添加新引用)设置在项目中的包含文件 (包含没有代码的文件)

我不知道该怎么做(我是 C++/CLI 新手)

感谢您的建议/解决方案

库项目声明为 DLL

#include "stdafx.h"

using namespace System;

ref class cBox
{
public:
cBox() ;
cBox(double lv,double bv,double hv);

double Volume();

private:
double Length;
double Width;
double Height;
};

图书馆代码:

#include "stdafx.h"
#include "cBox.h"


cBox::cBox() 
{
Console::WriteLine(L"No arg constructor called");

Length  = 1.0 ;
Width       = 1.0 ;
Height  = 1.0   ;

}

cBox::cBox(double lv,double bv,double hv)
{
Console::WriteLine(L"Constructor called");

Length  =   lv;
Width       =   bv;
Height  =   hv;

}
double cBox::Volume()
{
    return Length*Width*Height;
}

然后在控制台 CLR 项目中我尝试链接这个库,我得到它的 .h 文件

#include "stdafx.h"
#include "cBox.h"

using namespace System;


int main(array<System::String ^> ^args)
{

Console::WriteLine(L"Test Library:\n");

cBox^ oBox; // handle of type box

oBox = gcnew cBox;

Console::WriteLine(L"Default Box Volume {0}",oBox->Volume());

  return 0;
}

【问题讨论】:

  • 我们需要查看代码才能为您提供帮助
  • 因此您想使用 C++ 将一些代码编译成托管程序集。然后你想使用该程序集中的 .lib 吗?
  • 其实应该是可以的。您能否提供更多信息和代码和项目布局示例。
  • 你知道#using怎么用吗?除非您导入托管类,否则您不能使用它们。
  • 您好,感谢您的支持;MajesticRa 我将代码放在消息上,JN:我不知道#using 声明您能告诉我这个案例需要写什么吗?谢谢再次

标签: c++ c++-cli


【解决方案1】:

您需要进行一些更改才能使其正常工作。首先,您需要创建类 public 以便您的应用程序可以使用它:

public ref class cBox
{
    ...

您需要从控制台应用程序项目中删除#include "cBox.h";使用托管库时,包含是隐式的。

【讨论】:

  • @pasparis 如果您发现一个有用的答案,您应该点击帖子左侧数字上方的向上箭头来投票。如果它解决了您的问题,您也可以通过单击它下面的勾号来接受它。接受你的问题的答案是一种很好的礼仪,否则人们不太可能帮助你。
  • 谢谢你的解释,看来我需要15个声望才能被允许点击向上箭头,然后我点击复选标志然后它通过绿色,是正确的吗?再次感谢你,帕斯卡
猜你喜欢
  • 1970-01-01
  • 2018-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多