【问题标题】:In a VC++ project in Visual Studio, how to I specify /EXPORT symbols?在 Visual Studio 的 VC++ 项目中,如何指定 /EXPORT 符号?
【发布时间】:2010-11-22 03:09:53
【问题描述】:

我有一个使用命令行 cl.exe 编译器构建和链接 DLL 的 makefile 项目,该编译器包含在 VC++ Express(免费)工具中。我现在想将该 makefile 项目转换为 Visual Studio 项目。

DLL 实际上不是 C++;都是用 C 写的。

DLL 导出少量符号和函数,由链接到 DLL 的其他程序调用。我相信为了生成这个 DLL,我需要在链接命令行中为每个导出的符号包含一个 /EXPORT:Foo 语句。

我如何在 Visual Studio 2008 中做同样的事情?如何指定链接器选项以从 DLL 导出特定的一小组函数?

【问题讨论】:

    标签: visual-studio build visual-c++ linker


    【解决方案1】:

    查看Exporting from a DLL 的前几个小节,其中说,

    您可以从 DLL 导出函数 使用两种方法:

    创建模块定义 (.def) 文件 并在构建时使用 .def 文件 DLL。如果需要,请使用此方法 从你的 DLL 中导出函数 序数而不是名称。

    使用关键字 __declspec(dllexport) 在函数的定义中。

    【讨论】:

      【解决方案2】:

      您必须使用链接器“命令行”属性中的“附加选项”并明确添加选项。

      我认为大多数人将__declspec(dllexport) 属性与宏一起使用以使其更可用,并使 declspec 在库的客户端的标头中成为 dllimport 版本。

      【讨论】:

        【解决方案3】:

        或者你可以试试:

        cl /LD hellodll.cpp /link /EXPORT:func01 /EXPORT:func01
        

        对于"_declspec(dllexport)"未指定的函数

        【讨论】:

        • 对,但问题是如何在 Visual Studio 中执行此操作,而不是如何在命令行中执行此操作。事实上,在我的问题中,我什至说我可以在命令行上使用/EXPORT 选项来完成。
        【解决方案4】:

        我没有看到它的 GUI 选项,因此您可以在项目属性的链接器下的命令行下手动添加它。不过,我认为大多数人为此使用 DEF 文件。

        【讨论】:

          猜你喜欢
          • 2016-10-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-07-01
          • 2010-10-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多