【问题标题】:Creating a DLL for Labview为 Labview 创建 DLL
【发布时间】:2015-04-07 08:51:50
【问题描述】:

我有一个使用 Mingw gcc 编译器制作 .exe 的 c 项目。我需要为labview制作一个dll。我已经阅读了不同的位置如何做到这一点,但似乎没有一个完整地告诉我这是如何完成的。

我添加了编译器设置 -shared

然后我能够成功加载 dll 并在其他 C 项目和 labview 中使用这些函数。

但是所有功能在labview中都是可见的,我还没有添加

__declspec(dllexport)

例如在 Mingw 网站上,我被告知要这样做。

我这样做是否正确,或者这里有什么地方可能出错?

【问题讨论】:

  • 通常declspec是从宏扩展而来的,函数的声明是什么样的?
  • 我没有在函数前面使用任何宏,问题是我是否应该

标签: c gcc dll mingw labview


【解决方案1】:

在 gcc 中,默认导出所有符号(函数)。大多数指南所基于的 Visual Studio 并非如此。

但是,可以通过禁用默认导出来强制控制导出符号。这可以通过传递来完成。

-fvisibility=hidden

对编译器的每次调用。并随后将导出的函数标记为。

__attribute__ ((dllexport))

就像使用 declspec 一样。 这样做有很多好处,下页对此有更好的解释。 https://gcc.gnu.org/wiki/Visibility

编辑:我看到使用 mingw 稍微改变了一点。

如果您将 -no-undefined 和 --enable-runtime-pseudo-reloc 选项传递给链接器,则不必为生成 DLL 的源代码添加 dllimport 或 dllexport 属性;默认情况下,所有函数都会自动导入/导出,就像在 unices 中一样。

发件人:http://www.mingw.org/wiki/sampledll

您是否将这些标志中的任何一个传递给链接器?

【讨论】:

  • 那我怕帮不了你,因为我之前没用过mingw。
猜你喜欢
  • 2018-04-06
  • 1970-01-01
  • 2021-11-21
  • 2018-10-25
  • 1970-01-01
  • 2019-09-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多