【问题标题】:Visual Studio (2012) changing a dll to export classes and variablesVisual Studio (2012) 更改 dll 以导出类和变量
【发布时间】:2017-11-06 08:40:54
【问题描述】:

我创建了一个 VC++ Win32 控制台应用程序并勾选了 DLL,但也忘记了勾选“导出变量”。后来我注意到那里的类、变量等没有被导出到调用应用程序(它正在使用 [DllImport...])。

当然,我可以创建一个新的 DLL 并勾选“导出”选项,但事后有没有办法做到这一点?

【问题讨论】:

    标签: c++ visual-studio-2012 dll export


    【解决方案1】:

    这一切都归结为声明导出的名称__declspec(dllexport)

    “导出”复选框仅生成一个额外的 .h 文件,其中定义了以下内容:

    #ifdef MYPROJECT_EXPORTS
    #define MYPROJECT_API __declspec(dllexport)
    #else
    #define MYPROJECT_API __declspec(dllimport)
    #endif
    

    这样你以后就可以在代码中编写:

    MYPROJECT_API void MyExportedFunction();
    

    您还可以在 DLL 以及使用您的 DLL 的客户端代码中重用此声明(请注意,无论“导出”复选框如何,都会自动定义 MYPROJECT_EXPORTS)。

    您不能稍后生成MYPROJECT_API,但您可以轻松地手动生成和/或通过其他方式声明导出的函数__declspec(dllexport)

    【讨论】:

      【解决方案2】:

      是的,您也可以稍后更改。只需创建一个新的 DLL 项目,您可以在其中导出内容并比较项目文件。您也可以在项目设置 UI 中进行一些调整,但这可能会更加困难。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-12-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-14
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多