gpt4 book ai didi

c# - VS2015 — 将 CRL 与 C++ DLL 链接起来

转载 作者:太空宇宙 更新时间:2023-11-04 12:59:41 26 4
gpt4 key购买 nike

我是一名 C# 程序员,我正在尝试制作一个 C++/CLI 包装器。我在解决方案中有三个项目:

  • C++动态链接库
  • C++ CLR
  • WPF C#

我只是在做测试,所以我得到了这些实现:

C++ DLL 测试.h:

class Test
{
public:
Test();
~Test();

int Increment();

private:
int counter = 5;
};`

C++ DLL 测试.cpp

#include "Testing.h"

int Test::Increment()
{
return counter++;
}

CLR 包装器.h

#pragma once
#include "Testing.h"

using namespace System;

namespace Wrapper
{
public ref class Wraptest
{
public:
Wraptest();
int Increment();

private:
Test* t;
};
}

CLR 包装器.cpp

#include "stdafx.h"
#include "Wrapper.h"
#include "PITest.h"

Wrapper::Wraptest::Wraptest()
{
t = new Test();
}

int Wrapper::Wraptest::Increment()
{
return t->Increment();
}

我在 Wrapper 项目中添加了对 Testing C++ DLL 项目的引用。我还将 DLL 解决方案头文件添加到包装器的附加包含中。

C++ DLL 项目构建良好,但是当我构建 Wrapper 项目时出现以下错误:

Severity Code Description Project File Line Suppression State Error LNK2028 unresolved token (0A000007) "public: __thiscall Test::Test(void)" (??0Test@@$$FQAE@XZ) referenced in function "public: __clrcall Wrapper::Wraptest::Wraptest(void)" (??0Wraptest@Wrapper@@$$FQ$AAM@XZ) Wrapper C:\Users\mytoy\Documents\Visual Studio 2015\Projects\CodeTest\Wrapper\Wrapper.obj 1

Severity Code Description Project File Line Suppression State Error LNK2019 unresolved external symbol "public: __thiscall Test::Test(void)" (??0Test@@$$FQAE@XZ) referenced in function "public: __clrcall Wrapper::Wraptest::Wraptest(void)" (??0Wraptest@Wrapper@@$$FQ$AAM@XZ) Wrapper C:\Users\mytoy\Documents\Visual Studio 2015\Projects\CodeTest\Wrapper\Wrapper.obj 1

Severity Code Description Project File Line Suppression State Error LNK1120 2 unresolved externals Wrapper C:\Users\mytoy\Documents\Visual Studio 2015\Projects\CodeTest\Debug\Wrapper.dll 1


我想不出解决办法。谢谢。

最佳答案

好的,我设法让它工作了。这很容易。

我检查了this link我错过了这个:

// C++ DLL Header
#ifdef TESTING_EXPORTS
#define TESTING_API __declspec(dllexport)
#else
#define TESTING_API __declspec(dllimport)
#endif

在包装器上,我只是将 header 位置添加到附加包含目录(链接器未更改),我开箱即用。

关于c# - VS2015 — 将 CRL 与 C++ DLL 链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44752542/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com