在Visual Studio 2015中创建一个dll库
Creating a dll library in Visual Studio 2015
这个例子似乎再简单不过了:
//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++/CLI 中将 .NET 事件从一个 DLL 引发到另一个 DLL
- 从 .lib 文件创建一个.dll文件
- 我可以用C++/WinRT编写一个DLL,供windows桌面应用程序(而不是UWP)或Unity插件使用吗
- 将 std::string 作为参数从一个 DLL 传递到另一个 DLL 引发访问冲突错误
- Java加载DLL,该DLL从JNI中的另一个DLL导出方法
- 如何在另一个 DLL 上使用 '/DELAYLOAD' 的 DLL
- 在一个 DLL 中嵌入所有必需的 DLL
- 用C++为java构建一个dll,它正在调用另一个dll(Eclipse上的JNI)
- 是否有从另一个DLL中加载DLL的最佳实践
- 如果你链接到一个DLL,如果该DLL丢失,是否可以启动你的可执行文件
- 第一次尝试创建一个包含许多类的DLL,捆绑在一个DLL中
- 如何正确删除从另一个DLL接收的派生对象
- 在 jmpq 上崩溃到另一个 dll 中的函数与 mingw64
- 将一个 dll 导入另一个 dll C++
- Visual Studio,C++,在另一个DLL导出的类中使用DLL导出的类
- 从另一个 dll 链接动态 dll 会导致错误
- 将一个C++ DLL 加载到 matlab 中,该 matlab 调用另一个 DLL 中的函数
- 用C++中的另一个Dll调用Dll
- LNK2019错误一个DLL链接到MFC DLL
- 导出另一个dll的静态成员