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

c語言編寫dll

發布時間: 2023-03-17 11:11:06

A. c語言怎麼調用dll文件

由於c的sdk編程的時候調用的api也應該是從dll中導出來的,這樣c應該也是能調用dll的,c語言調用dll文件內部函數的方法如下:
1:用c調用一個載入器LOADER<可能是個api函數>;
2:載入目標dll,比如xx.dll
3:找到需要調用的函數的地址P_FUNC
4:調用FUNC即可

B. c怎麼生成dll文件

用 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. 如何用VC編寫dll文件

VC編寫dll文件

1、VC++->New->Project->Win32 Dynamic_Link Library;

2、選擇創建一個空工程;

首先DLL需要一個頭文件,所以新建一個CC++ Header File

這個頭文件中必須包含想要輸出的變數和函數,頭文件必須定義用於輸出的任何符號和數據結構。

例如 :

證明調用動態鏈接庫里的 Add函數成功。

D. dll文件大都使用C語言或者C++編寫的嗎 我從網上搜相關的例子都是這兩種語言編寫的

dll 是動態連接庫,裡麵包含的的是庫函數的實現,有動態就有靜態,靜態鏈接庫是程序用到這段代碼,就會把庫的這段代碼復制到程序里,而動態鏈接庫就是說當我調用這函數時,這函數的實現不在程序里,而在庫里頭,系統從c:\widnows\system32里找到對應庫調用對應的函數。不管什麼語言都,他們都可以寫dll,因為在編寫動態鏈接庫時,你要聲明裡有什麼函數還要實現它,不管什麼語言,本質就是調用相同的系統API函數創建出來的dll文件。因此只要windows支持的語言都能用於創建dll,VB,delphi,C++,C#等都是可以的,鑒於為什麼多數是C++,是因為做庫和底層的東西多數用C/C++來做,比較高效,其實用delphi也可以的,只是delphi過時了,現在人不怎麼用,所以代碼不好找,本質:基本所有語言都能調用系統API函數創建動態鏈接庫(dll).有不懂的請提問。

E. 怎麼把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....

F. c語言怎麼調用dll文件

1、新建DLLTest文件夾,在該文件夾中新建source文件夾。

注意事項:

C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。

G. C語言程序怎麼編譯成dll文件供其他語言調用

C程序編譯成dll文件只不過是在要公開的介面函數聲明前面加上幾個特定的修飾符而已。
下面是個例子,用dev-cpp建了個dll的默認文檔
/*dll.h文件*/
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */

DLLIMPORT void HelloWorld (void);

#endif /* _DLL_H_ */
/*dllmain.c文件*/
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!/n", "Hi", MB_ICONINFORMATION);
}

BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}

具體請參考jilei08124的CSDN博客

H. 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構造完畢.

I. c語言如何做成.dll的東西然後用c#做界面調用這個c程序

下邊那位太懶了吧,從其他地方的都不改一些?
我自己寫了一種方法,你看看是不兆尺是你要的,過程如下:
新建空的解決方案 -- 添加項目--VC++--Win32項目 -- 輸入名字點確認 -- 向導里選下一步 -- 將應用程序類型改為Dll,然後點完成就可以了,在你的源文件cpp里寫函數就可以了,寫法示例:extern "C" __declspec(dllexport) int add(int x, int y)
{
return x+y;
}

然後生成,在debug里找到dll文件(最好把dll,lib,pdb都過來團凳),到你的C#的bin文件夾下
在C#里添塌猜旅加一個cs函數,在裡面添加引用using System.Runtime.InteropServices;
class 前添加public(改成public才可以被其他調用)
在class里添加C裡面函數的聲明;示例如下
[DllImport("text.meo.dll")]
public static extern int add(int x,int y);
然後在其他地方就可以通過這個cs函數.add調用add函數,其他的函數和這一樣操作

我這邊測試是沒什麼問題,有什麼疑問再問我

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:180
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:739
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:247
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:343
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:408
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:665
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:392