很難在谷歌上搜索關於C的主題,因爲我一直在找到與C#或C++相關但不是C的結果,所以也許有人可以給我一個快速,直接的答案。如何在C中使用DLL中的函數而無需使用LIB文件?我知道所有的函數原型和他們的名字。在沒有lib的C中使用DLL
在此先感謝!
很難在谷歌上搜索關於C的主題,因爲我一直在找到與C#或C++相關但不是C的結果,所以也許有人可以給我一個快速,直接的答案。如何在C中使用DLL中的函數而無需使用LIB文件?我知道所有的函數原型和他們的名字。在沒有lib的C中使用DLL
在此先感謝!
是的,你可以。您應該使用GetProcAddress功能,可以直接調用該函數的DLL,而不涉及LIB
過程明確地鏈接到一個DLL調用GetProcAddress獲得 在DLL導出函數的地址。您使用返回的 函數指針來調用DLL函數。
爲了從上述鏈接引用實施例:
typedef UINT (CALLBACK* LPFNDLLFUNC1)(DWORD,UINT);
...
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC1 lpfnDllFunc1; // Function pointer
DWORD dwParam1;
UINT uParam2, uReturnVal;
hDLL = LoadLibrary("MyDLL");
if (hDLL != NULL)
{
lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress(hDLL,
"DLLFunc1");
if (!lpfnDllFunc1)
{
// handle the error
FreeLibrary(hDLL);
return SOME_ERROR_CODE;
}
else
{
// call the function
uReturnVal = lpfnDllFunc1(dwParam1, uParam2);
}
}
這就是我要做的事情。當這個項目結束時,我會告訴你我的經歷。我試圖遠程控制舊電腦中運行的舊版Winradio 3000系列卡。我的父親希望能夠在任何地方使用它,並且似乎認爲遠程控制很容易實現。好吧,我現在已經有音樂從一臺電腦流到另一臺電腦了,所以這裏有一個開始,現在我只需要用winradio附帶的DLL來實現控件,我父親的魔法遙控器就會完成。 – 2012-07-28 07:10:51
哦,然後我需要製作一個用戶界面,我想...... – 2012-07-28 07:11:33
是的,這工作得很好!沒有什麼真的。 Winradio API的文檔有點混亂(顯然,他們的世界中的DWORD在我的世界中沒有簽名)。除此之外,這很容易。非常感謝! – 2012-07-28 23:04:35
可以使用的LoadLibrary()和如在由DarkXphenomenon答案描述GetProcAddress的()。或者,另一種方法是通過創建一個.def文件然後通過LIB命令運行該文件來生成一個導入庫來爲DLL創建自己的導入庫。這裏的更多細節:
我覺得你老兄! C越來越傾向於背景.. – displayname 2014-02-06 13:54:42