2015-04-07 94 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