无法使用 Visual Studio 导出 C++ dll

Posted

技术标签:

【中文标题】无法使用 Visual Studio 导出 C++ dll【英文标题】:Can't export a C++ dll with visual studio 【发布时间】:2016-04-24 21:24:05 【问题描述】:

我正在尝试创建一个 C++ dll。我已按照 msdn 教程进行操作,但无法正确编译我的 dll。

问题是任何函数都被导出。我已经使用dumpbin.exe 工具和nm 工具对其进行了测试。

在这两种情况下,都没有检测到符号。

这是这个库的代码:

头文件:

#ifndef NLIB_H
#define NLIB_H

#ifdef _WINDLL
#define NLIB_EXPORTS __declspec( dllexport )
#else
#define NLIB_EXPORTS __declspec( dllimport )
#endif

#ifdef __cplusplus
extern "C"
#endif

    NLIB_EXPORTS int fun1(int n);

#ifdef __cplusplus

#endif

#endif

源代码文件:

#include "nlib.h"

int fun1(int n) 
    return 100;

【问题讨论】:

你在构建 dll 时是否定义了_WINDLL 是的,如果您选择动态库作为项目类型,则由 Visual Studio 定义。此外,VS 2013 指示定义了哪些宏,儿子我确定 _WINDLL 正在工作。 _WINDLL 在哪里定义 - 在某个头文件中,还是在项目设置中? 在项目设置中。 【参考方案1】:

我发现了错误。还需要将NLIB_EXPORTS 添加到*.c 文件中,如下所示:

#include "nlib.h"

NLIB_EXPORTS int fun1(int n) 
    return 100;

【讨论】:

以上是关于无法使用 Visual Studio 导出 C++ dll的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Visual Studio 2015 中成功导出 C++ 项目模板?

从 Linux 动态库/Linux 控制台应用程序导出/导入 C++ 函数 | Visual Studio Linux 项目

Sharepoint - 由于 ListId 属性,无法在 Visual Studio 中重复使用导出 ListViewWebPart

导出的 Visual Studio 模板中缺少 .lib 文件

无法在 Visual Studio 2010 中构建 C++ 项目

无法使用 Visual Studio 2010 调试 C++ BHO DLL