
如何簡單快速創建Win32平台下的動态鍊接庫?但是有的創建出來用C/C 調用時沒有問題,但是在其它編程語言調用時可能會出現問題,下面我們就開非常傻瓜式的步驟創建通用的windows動态庫過程:
1,創建空的win32空的工程。
2,添加C/C 原文件和頭文件。
3,頭文件内容(MyHead.h):
#ifndef __MYHEAD_H__
#define __MYHEAD_H__
#ifndef MY_API
#define MY_API extern "C" __declspec(dllimport)
#endif
添加你想要放到Dll中的引出函數,我們這裡用一個加和減的函數功能來舉例。
MY_API int WINAPI MyAdd(int a, int b);
MY_API int WINAPI MySub(int a, int b);
#endif //__MYHEAD_H__
本質上,在外面使用這個頭文件是不會定義MY_API,所以在外使用DLL時,文件夾内容實際上為:
4,C/C 内容:
#include windows.h
#define MY_API extern "C" __declspec(dllexport)
#include "MyHead.h"
MY_APIint WINAPI MyAdd(int a, int b)
{
return (a b);
}
MY_APIint WINAPI MySub(int a, int b)
{
return (a - b);
}
注意:這裡定義了MY_API。本質上,這裡的函數聲明為:
extern "C" __declspec(dllexport)int __stdcall MyAdd(int a, int b);
extern "C" __declspec(dllexport)int __stdcall MySub(int a, int b);
5,增加def文件(Mydll.def):
;DLL導出文件,名字Mydll可以加引号
;by John
LIBRARY Mydll
EXPORTS
MyAdd @1
MySub @2
注意:
一、在def文件中,函數名和@索引之間需要有空格、TAB等分隔符。
二、def文件需要在“配置”,“配置屬性”,“連接器”,“輸入”,“模塊定義文件”制定,否則即使添加到工程也不會起作用。在VS2008等後來版本中,也不能用#pragma comment(linker, "/DEF:\"Mydll.def\"")來讓def文件起作用。
這樣用def文件生産的dll才能在VC以及VB等其他語言中使用。

C語言編程調用dll時,隻要引入MyHead.h和對于的lib,并加入dll文件即可編譯運行。
比如在VB中可以聲明為:
Declare Function MyAdd Lib "Mydll.dll" (ByVala As Long, ByValb As Long) As Long
DeclareFunction MySub Lib "Mydll.dll" (ByVala As Long, ByValb As Long) As Long
通過這五步,就可以把生成的Lib文件和dll文件提供給windows平台下的其它編程時使用,怎麼樣,比較簡單吧?
大家如果對編程感興趣,想了解更多的編程知識,解決編程問題,我們這裡有java高手,C /C高手,windows/Linux高手,android/ios高手,請大家關注我的程序員互動聯盟或者coder_online
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!