在 Visual Studio 2015 中创建 dll 库

Posted

技术标签:

【中文标题】在 Visual Studio 2015 中创建 dll 库【英文标题】:Creating a dll library in Visual Studio 2015 【发布时间】:2015-10-23 09:36:26 【问题描述】:

这个例子看起来再简单不过了:

//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。因此,当包含头文件时,它认为它正在导入 dll。 @MikeVine 嗨,迈克,嘿,我认为您应该将此评论添加为答案,以便我接受。现在 +1 非常感谢! 【参考方案1】:

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

如果不这样做,它将导入不是你想要的

【讨论】:

以上是关于在 Visual Studio 2015 中创建 dll 库的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2015 中创建安装程序?

如何在 Visual Studio 2015 Community 中创建本地数据库?

如何在 Visual Studio 2015 中创建 SQL Server 项目?

在 Visual Studio 2015 中创建后未构建 Xamarin UWP 项目

在包含 make 文件的 Linux 中创建的 Visual Studio 2015 中编译 C++ 项目

如何在Visual Studio 2015中创建MFC窗体应用