c++ - 无法从 C++ DLL 导出函数

标签 c++ visual-studio-2008 dll mfc

我需要使用 Visual Studio 2008 创建一个 C++ MFC DLL。为此,我在 Visual Studio 中创建了一个 DLL MFC Win32 控制台项目,并创建了一个创建对象并使用其方法将字符串打印到屏幕的函数。有点像这样:

__declspec(dllexport) void Foo(void);

哪里:

    void Foo(void){
    print* obj = new print;
    obj->testPrint();
    return;
}

void print::testPrint(void){
    printf("Bar\n");
    return;
}

它编译成功并生成 DLL,但是当我尝试使用它时,我总是得到: “错误 LNK2019:未解析的外部符号“void __cdecl Foo(void)”

我尝试使用 Dependency Walker,但它没有在 DLL 中显示任何函数。难道我做错了什么?我进行了很多搜索,但仍然无法从可能发生的事情中得出任何结论。

最佳答案

听起来您可能没有在任何 cpp 文件中包含指定导出的头文件。请记住,cpp 文件是唯一实际编译的文件。因此,请确保至少在一个 cpp 文件中包含带有 __declspec(dllexport) void Foo(void); 的 header 。还要确保您的项目链接器-> 输入设置没有指定“模块定义文件”(def) 文件。

在 dependency walker 显示某些东西确实被导出之前,不要费心尝试链接到 DLL。

关于c++ - 无法从 C++ DLL 导出函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12404709/

相关文章:

c++ - 跨平台区域设置表

c# - 无法从 C# 应用程序调用简单的自定义 Dll 导入

c# - 什么构成了应用程序控制台或 Windows 窗体应用程序?

visual-studio-2008 - 在 Crystal Report 中创建新模板,visual studio 2008

c# - 无法在控制台应用程序中引用 dll 但我可以在 wpf 中

c - 链接到我创建的 DLL

c++ - C++ 跨平台库和绑定(bind)的最佳文件夹结构

c++ - 求大数的组合值

C#- Microsoft.Office.Interop.Excel 将 excel 中的所有行复制到另一个工作表

c++ - dll到主程序通信