gpt4 book ai didi

c++ - VS2010 中的不一致链接

转载 作者:行者123 更新时间:2023-11-28 08:07:48 25 4
gpt4 key购买 nike

我正在学习如何创建 C++/Cli DLL 的教程,出于某种原因,我收到了每个函数声明的警告,这是完整代码:

// KRecognizer.h

#pragma once

namespace KR
{
class __declspec(dllimport) KinectRecognizer
{
public:
KinectRecognizer();
~KinectRecognizer();
int Display();
};
}

_

//  KRecognizer.cpp
#include "stdafx.h"
#include "KRecognizer.h"

using namespace System;

KR::KinectRecognizer::KinectRecognizer()
{
}

KR::KinectRecognizer::~KinectRecognizer()
{
}

int
KR::KinectRecognizer::Display()
{
Console::WriteLine(L"Writing a line");
return 100;
}

错误输出如下:

http://pastie.org/3678144

我正在使用/clr 标志进行编译。

最佳答案

header声明了DLL import,也就是说类的定义来自于一个DLL。由于您提供了定义,因此会出现链接错误。在定义 DLL 时,您需要使用 __declspec(dllexport)

由于您希望在将使用 DLL 的应用程序中使用相同的头文件,因此经常使用以下习惯用法:

#ifdef MYAPI_EXPORTS
# define MYAPI __declspec(dllexport)
#else
# define MYAPI __declspec(dllimport)
#endif

然后使用:

class MYAPI KinectRecognizer

#define MYAPI_EXPORTS 在 DLL 中包含 header 之前,但不要在使用 header 导入 DLL 的应用程序中定义它。

关于c++ - VS2010 中的不一致链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9890860/

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