2011-09-09 51 views
2

我有一個虛擬的問題。我有三個C文件:在f1.c f2.c f3.c,其含有:使用創建的DLL文件(從應用程序調用函數)

// f1.c 
int f1() 
{ 
    return 2; 
} 

// f2.c 
int f2() 
{ 
    return 4; 
} 

// f3.c 
int f3() 
{ 
    return 10; 
} 

我已經3對象文件,當我運行下面的命令(我使用下的windows7 mingc):

gcc -c f1.c f2.c f3.c 

和我創建的dll文件:

gcc f1.o f2.o f3.o -o test1.dll -shared 

使用DLL導出查看器我已經打開這個文件: enter image description here

如何在我的應用程序(跨平臺)中使用此文件?我如何打電話給functrion f1,f2,f3?

對不起,我英文不好

+1

跨平臺? (你的意思是跨平臺像Windows和Linux?) –

+0

是的,Windows和Linux ... –

+1

你必須在不同平臺上重新編譯得到該平臺的lib。 –

回答

2

假設你有頭文件,唯一缺少的就是A檔案,鏈接器需要它來找出DLL提供的內容。

更改此:

 
gcc f1.o f2.o f3.o -o test1.dll -shared 

向該:

 
gcc f1.o f2.o f3.o -o test1.dll -shared -Wl,--out-implib,libtest1.a 

然後,共享庫進行鏈接,通過向-ltest1gcc

您仍然需要重新編譯每個平臺和體系結構(x86,AMD64,IA64等)的庫。 Windows使用DLL,但Linux使用共享對象。

查看http://www.mingw.org/wiki/sampleDLL瞭解更多信息。

1
  1. 包括在調用程序的頭文件。
  2. 將調用程序鏈接到與庫關聯的.lib文件。
  3. 確保該庫位於庫搜索路徑中。
+0

你能告訴我哪裏可以看到一個例子嗎? –

+1

該過程將在您的編譯器文檔中介紹。步驟2總是特定於編譯器,步驟3是針對該平臺的。 –