我正在学习如何创建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;
}
以下是错误输出:
我正在使用/ clr标志进行编译。
答案 0 :(得分:1)
标头声明DLL导入,这意味着类的定义来自DLL。由于您提供了定义,因此会出现链接错误。在定义DLL时,您将需要使用__declspec(dllexport)
。
由于您将要在将使用DLL的应用程序中使用相同的头文件,因此通常使用以下习惯用法:
#ifdef MYAPI_EXPORTS
# define MYAPI __declspec(dllexport)
#else
# define MYAPI __declspec(dllimport)
#endif
然后使用:
class MYAPI KinectRecognizer
在将标头包含在DLL中之前 #define MYAPI_EXPORTS
,但不要在应用程序中使用标头导入DLL来定义它。