當前位置:首頁 » 編程語言 » c語言庫dll

c語言庫dll

發布時間: 2023-08-31 08:50:28

Ⅰ 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 文件. 放在當前文件夾或系統文件夾里

熱點內容
sql分組最後一條 發布:2025-02-04 03:38:24 瀏覽:269
單宮數字奇門演算法 發布:2025-02-04 03:33:57 瀏覽:861
文件夾盒子 發布:2025-02-04 03:33:05 瀏覽:109
python教案 發布:2025-02-04 03:10:38 瀏覽:798
怎麼編程套料 發布:2025-02-04 02:50:31 瀏覽:208
副編譯 發布:2025-02-04 02:05:25 瀏覽:613
解壓按摩師 發布:2025-02-04 01:21:31 瀏覽:424
linuxssh限制 發布:2025-02-04 01:20:40 瀏覽:697
腳本式是什麼 發布:2025-02-04 01:06:24 瀏覽:248
手機wps密碼怎麼取消密碼 發布:2025-02-04 00:51:44 瀏覽:596