2011-07-17 91 views
8

我需要幫助來編譯一個腳本(「iterator.c」)到一個DLL中。因爲它不是不能使用VS2010支持在C99標準添加到C的功能(我使用「complex.h」,但VB不支持它)。在GCC或Cygwin中創建一個DLL?

我一直在找替身了,但所有我發現是GCC,我不知道如何安裝/使用(說真的,我花了像半小時,可通過文檔閱讀和我不我甚至不知道該如何安裝它),還有我已經安裝的Cygwin,但我不知道如何使用。另外,我安裝了MinGW,但我認爲它和Cygwin多少是一樣的,而且我仍然不知道如何製作一個DLL。

這不是我一直都懶惰,甚至沒有嘗試過,只是這些編譯器不像我以前用過的東西(主要是Python IDLE和Visual Studio,這使得事情變得很容易爲你)。我有點迷路。

可能有人給我如何使用這個工具,使我可以從另一個腳本訪問DLL一些建議嗎?這非常重要。

預先感謝您。

回答

11

必須放在你想如出口前面的方法__declspec(dllexport)的,你可以#定義此爲最大輕鬆

EXPORT_DLL void hello() { ... } 

要編譯DLL使用

gcc -c -mno-cygwin mydll.c 
gcc -shared -o mydll.dll mydll.o -Wl,--out-implib,libmylib.dll.a 

然後附上

gcc -o myexe.exe test.o mydll.dll 

編輯:忘了最重要的一塊,你需要做一個mydll.h網絡以包含您的方法定義,以便編譯器知道爲鏈接器保留一個位置以便稍後填寫。就像

#ifndef MYDLL_H 
#define MYDLL_H 

extern "C" __declspec(dllexport) 
#define EXPORT_DLL __declspec(dllexport) 

EXPORT_DLL void hello(); 

#endif 
+0

是不是'__declspec'不是'__delspec'? –

+0

extern「C」__declspec(dllexport) –

+0

謝謝你們在飛行時寫錯,錯別字。 –