修复 C++ 中损坏的导出名称

fix Mangled Export names in C++

我是 C++ 的新手,想编写一个带有一些导出的 DLL,但在编译时我得到了错误的名称。我现在知道,为了解决这个问题,我应该在声明前添加 extern "C" ,但这仍然不起作用。

我的代码

#pragma once
#include <iostream>
#include <windows.h>

using namespace std;

#ifdef FXSST_EXPORTS
#define FXSST_API __declspec(dllexport)
#else
#define FXSST_API __declspec(dllimport)
#endif

extern "C" FXSST_API void Hello(void);
FXSST_API void Hello(void)
{
    cout << "Hello World" << endl;
}

出于个人原因(并使我自己更容易),如果可能,我想将所有内容保存在一个 .cpp 文件中。

谢谢 ;)

最简单的方法是设置您的 DLL 项目以创建一个导入库 (.lib),其中包含声明您的 class 的 header (.h) 文件。然后将 .lib 添加到使用 DLL 的项目中的 link 库,并在需要使用 class 的地方#include your header。

MSDN on building dlls