看起来该示例再简单不过了:

//Example.h
#pragma once

#ifdef EXPORTING_DLL
extern __declspec(dllexport) void HelloWorld();
#else
extern __declspec(dllimport) void HelloWorld();
#endif



//Example.cpp
#include "Functions.h"

#define EXPORTING_DLL

void HelloWorld()
{

}


那么,我有什么问题呢?好的,当尝试按原样进行编译时,即在VS中创建dll类型项目后,我得到警告:
警告C4273:“ HelloWorld”:DLL链接不一致
如果我将cpp文件中的HelloWorld定义更​​改为:

   __declspec(dllimport) void HelloWorld()
    {
    }


我收到错误消息:

错误C2491“ HelloWorld”:不允许定义dllimport函数
另一方面,如果我将HelloWorld的定义更改为:

__declspec(dllexport) void HelloWorld()
{

}


我收到警告:

警告C4273'HelloWorld':DLL链接不一致
知道如何定义它以便在没有任何警告的情况下进行编译吗?我的意思是,这些警告至少令人担忧。

最佳答案

在包含标题之前,需要定义EXPORTING_DLL。这样,标头可以根据要导入还是导出来声明正确的原型。

如果不这样做,它将导入您不想要的内容

关于c++ - 在Visual Studio 2015中创建dll库,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33299176/

10-15 17:18