2010-06-20 56 views
2

我不知道爲什麼,但我想我可以靜態鏈接導入庫中的函數。似乎我是唯一一個曾經嘗試過的人,因爲我不能在我的生活中找到類似的職位。有沒有辦法從動態鏈接的項目中選擇靜態鏈接函數而不創建新項目和/或將其重新編譯爲靜態?模塊本身通過一個接口進行通信,我並不擅長導出函數。我只是想靜態鏈接代碼來創建對象....DLL項目中的靜態鏈接函數

將它變成一個宏有多糟?

IClassFactory* CF = NULL; 
hr = CoGetClassObject (
    CLSID_CF, 
    CLSCTX_INPROC_SERVER, 
    NULL, 
    IID_IClassFactory, 
    (void**)&CF); 

Interface* Instance = NULL; 
hr = CF->CreateInstance (
    NULL, 
    IID_Interface, 
    (void**)&Instance); 
+0

我導出了函數並隱式鏈接了dll ...仍然希望我可以指定靜態鏈接到一個函數..... – 2010-06-20 06:31:34

回答

1

如果這是你自己的項目(或者你有源代碼並且願意修改它),你可以使用inline函數來實現你不想動態鏈接的函數。

+0

這是我自己的項目,謝謝.... – 2010-06-20 08:59:33

1

靜態鏈接和導入庫不會在一起。導入庫用於幫助鏈接器找出您調用的函數在DLL中。

如果你想靜態鏈接(假設你有可用的代碼),然後重新配置 - 重新編譯DLL項目到一個靜態庫。

+0

「....不創建新項目和/或將其重新編譯爲靜態?」 -me .....所以不行! – 2010-06-20 05:46:17