为 Labview 创建 DLL

Creating a DLL for Labview

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

我添加了编译器设置 -shared

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

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

__declspec(dllexport)

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

我做对了吗,还是这里可能出了什么问题?

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

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

-fvisibility=hidden

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

__attribute__ ((dllexport))

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

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

If you pass the -no-undefined and --enable-runtime-pseudo-reloc options to the linker, you don't have to add dllimport or dllexport attributes to the source code that the DLL is made with ; all functions are imported/exported automatically by default, just like in unices.

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

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