2015-04-07 99 views
0

我有一个c-project,使用Mingw gcc编译器制作一个.exe。我需要为labview制作一个dll。我已经阅读过不同地点如何做到这一点,但似乎没有任何事情能够告诉我这是如何完成的。为Labview创建一个DLL

我加入了编译器设置-shared

enter image description here

然后,我是能够成功地加载DLL和在另一个C-项目中使用的功能,并在LabVIEW中。

但是所有的功能都在LabVIEW中可见的,我没有加入

__declspec(dllexport)的

我听说例如MinGW的网站上做的。

我是否正确地做了这件事,或者是否有可能出错的地方?

+0

通常declspec是从宏扩展的,函数的声明是什么样的? – CharlesB

+0

我没有使用任何功能的宏,问题是如果我应该 –

回答

2

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

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

-fvisibility=hidden 

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

__attribute__ ((dllexport)) 

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

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

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

来源:http://www.mingw.org/wiki/sampledll

你传递任何这些标志的链接?

+0

不,我没有通过任何这些标志 –

+0

然后恐怕我不能帮助你,因为我以前没有使用过mingw 。 – oysstu