c語言庫dll
Ⅰ dll文件如何用c語言生成
用 vc 6.0 下的cl.exe 和 link.exe工具,請讀下文:
聲明:下面這篇文章不是我寫的,源自:一個叫,有容乃大 的博客
如何手工編寫動態鏈接庫(windows dll)
1.本例介紹在命令行(Console)環境下製作dll的方法
2.讀者動手前,請確保在windows中安裝有編譯、鏈接工具和必要的函數庫文件。
3.本例使用C語言實現.
4.本例中使用路徑均為我機器上的絕對路徑,讀者需根據實際情況調整。
工具要求:
Microsoft的編譯器cl.exe
MIcrosoft鏈接器link.exe
dll製作步驟:
1.編寫dll函數實現源代碼hello.c
#include
int say_hello(char* name)
{
printf( "hello %s\n ", name);
return 1;
}
2.編寫dll函數輸出定義文件hello.def.
LIBRARY hello
EXPORTS
say_hello @1
3.編譯dll源碼,生成dll,lib文件.
3.1 新建命令行窗口
3.2 設置PATH �0�7 INCLUDE �0�7 LIB 3個環境變數.
SET PATH=K:\vcnet\vc7\bin;%PATH%
SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib;%LIB%
3.3 編譯hello.c
cd K:\Source\dllsample (hello.c和hello.def所在目錄)
cl /c hello.c
3.4 鏈接hello.obj,生成hello.dll,hello.lib兩個文件.
link /def:hello.def /dll hello.obj
4.測試dll函數.
4.1 編寫測試代碼 test.c
extern int say_hello(char* name);
int main(int argc,char** argv)
{
say_hello( "robbie ");
return 0;
}
4.2 編譯測試代碼test.c
cl /c test.c
4.3 鏈接test.obj和 hello.lib,生成可執行文件test.exe
link test.obj hello.lib
4.4 運行test.exe,屏幕輸出:
hello robbie
至此,一個dll構造完畢.
下面是我自己的一點補充:
如果要在c++下,或者win32 mfc下使用標准c寫的dll,必須把上面的聲明
extern int say_hello(char* name);改成:extern "C " int say_hello(char* name);
Ⅱ c語言寫的程序怎麼樣生成.dll文件
dll製作步驟:
1.編寫dll函數實現源代碼hello.c
#include
int say_hello(char* name)
{
printf( "hello %s\n ", name);
return 1;
}
2.編寫dll函數輸出定義文件hello.def.
LIBRARY hello
EXPORTS
say_hello @1
3.編譯dll源碼,生成dll,lib文件.
3.1 新建命令行窗口
3.2 設置PATH ?? INCLUDE ?? LIB 3個環境變數.
SET PATH=K:\vcnet\vc7\bin;%PATH%
SET INCLUDE=K:\vcnet\vc7\include;%INCLUDE%
SET LIB=K:\vsnet\Vc7\lib;%LIB%
3.3 編譯hello.c
cd K:\Source\dllsample (hello.c和hello.def所在目錄)
cl /c hello.c
3.4 鏈接hello.obj,生成hello.dll,hello.lib兩個文件.
link /def:hello.def /dll hello.obj
4.測試dll函數.
4.1 編寫測試代碼 test.c
extern int say_hello(char* name);
int main(int argc,char** argv)
{
say_hello( "robbie ");
return 0;
}
4.2 編譯測試代碼test.c
cl /c test.c
4.3 鏈接test.obj和 hello.lib,生成可執行文件test.exe
link test.obj hello.lib
4.4 運行test.exe,屏幕輸出:
hello robbie
至此,一個dll構造完畢.
Ⅲ C語言調用dll
LoadLibrary( "d:\\test.dll" ) ;帶上庫文件所在的全路徑名
Ⅳ 在C語言中,能簡單介紹一下DLL是干什麼的么
exe是可執行文件,裡面存的二進制代碼,dll也是存的二進制代碼,但是不可以自己執行,要有個exe調用它。就像是主函數和其他函數的關系,只不過存的是機器代碼。
Ⅳ 用C語言編寫DLL
一.動態鏈接庫(dll)結構
——dll中定義有兩種函數:導出函數(export
function)和內部函數
(internal
function),導出函數可以被其他模塊調用,內部函數只能在dll內部使用。我們在用c++定製dll文件時,需要編寫的就是包含導出函數表的模塊定義文件(.def)和實現導出函數功能的c++文件。下面以sample.dll為例介紹def文件和實現文件的結構:
——1.模塊定義文件(.def)是由一個或者多個用於描述dll屬性的模塊語
句組成的文本文件,每個.def文件至少必須包含以下模塊定義語句:
第一個語句必須是library語句,指出dll的名字。
exports語句列出被導出函數的名字。
可以使用description語句描述dll的用途(此句可選)。
";"對一行進行注釋(可選)
——2.實現文件(.cpp文件為例)
——實現入口表函數的.cpp文件中,包含dll入口點處理的api函數和導出
函數的代碼。
Ⅵ C語言如何調用DLL
//dll
#include<windows.h>
extern"C"//保持C語言文件
void_declspec(dllexport)tryProc()//定義函數
{
MessageBox(NULL,_T("a"),_T("a"),MB_OK);
}
-------------------------------------
//C
#include<windows.h>
intmain()
{
HMOUDLEdll=LoadLibrary(/*DLL文件名*/);
if(dll!=NULL)
{
FARPROCtry=GetProcAddress(dll,"tryProc");
if(try!=NULL)
{
tryProc();//假如函數有返回值,可以用try()得到返回值
/*_asmcalltryProc*/
}
}
return0;
}
Ⅶ dll文件大都使用C語言或者C++編寫的嗎 我從網上搜相關的例子都是這兩種語言編寫的
dll 是動態連接庫,裡麵包含的的是庫函數的實現,有動態就有靜態,靜態鏈接庫是程序用到這段代碼,就會把庫的這段代碼復制到程序里,而動態鏈接庫就是說當我調用這函數時,這函數的實現不在程序里,而在庫里頭,系統從c:\widnows\system32里找到對應庫調用對應的函數。不管什麼語言都,他們都可以寫dll,因為在編寫動態鏈接庫時,你要聲明裡有什麼函數還要實現它,不管什麼語言,本質就是調用相同的系統API函數創建出來的dll文件。因此只要windows支持的語言都能用於創建dll,VB,delphi,C++,C#等都是可以的,鑒於為什麼多數是C++,是因為做庫和底層的東西多數用C/C++來做,比較高效,其實用delphi也可以的,只是delphi過時了,現在人不怎麼用,所以代碼不好找,本質:基本所有語言都能調用系統API函數創建動態鏈接庫(dll).有不懂的請提問。
Ⅷ c語言怎麼調用別人的dll文件
(1)編寫程序時,你要包含(#include \"什麼.h\") dll文件作者提供 的 頭文件(.h文件) 。
程序里,便和普通函數調用一樣,去調用它的函數。
(2)程序編譯時,你要鏈接 dll文件作者提供 的 (.lib文件) 庫文件。
當然,你可以在源程序里把.lib 名字 寫上,編譯時自動去鏈接,例子:
#pragma comment (lib, \"什麼.lib\")
(3)執行時,要有 .dll 文件. 放在當前文件夾或系統文件夾里