導航:首頁 > 編程語言 > vc動態鏈接庫dll編程深入淺出

vc動態鏈接庫dll編程深入淺出

發布時間:2024-05-27 14:04:12

A. VC++ 紼嬪簭 濡備綍灝佽呬負dll鏂囦歡

鍒涘緩鏂扮殑鍔ㄦ侀摼鎺ュ簱 (DLL) 欏圭洰

浠 鈥滄枃浠垛濊彍鍗曚腑錛岄夋嫨 鈥滄柊寤衡濓紝鐒跺悗閫夋嫨 鈥滈」鐩鈥︹濄

鍦 鈥滈」鐩綾誨瀷鈥濈獥鏍間腑錛岄夋嫨 鈥淰isual C++鈥濅笅鐨 鈥淲in32鈥濄

鍦 鈥滄ā鏉庫濈獥鏍間腑錛岄夋嫨 鈥淲in32 鎺у埗鍙板簲鐢ㄧ▼搴忊濄

涓洪」鐩閫夋嫨涓涓鍚嶇О錛屽
MathFuncsDll錛屽苟灝嗗叾閿鍏 鈥滃悕縐扳濆瓧孌點 涓鴻В鍐蟲柟妗堥夋嫨涓涓鍚嶇О錛屽
DynamicLibrary錛屽苟灝嗗叾閿鍏 鈥滆В鍐蟲柟妗堝悕縐扳濆瓧孌點

鍗曞嚮 鈥滅『瀹氣濆惎鍔 Win32 搴旂敤紼嬪簭鍚戝箋
鍦 鈥淲in32 搴旂敤紼嬪簭鍚戝尖濆硅瘽妗嗙殑 鈥滄傝堪鈥濋〉涓錛屽崟鍑 鈥滀笅涓姝モ濄

鍦 鈥淲in32 搴旂敤紼嬪簭鍚戝尖濅腑鐨 鈥滃簲鐢ㄧ▼搴忚劇疆鈥濋〉涓錛岄夋嫨 鈥滃簲鐢ㄧ▼搴忕被鍨嬧濅笅鐨 鈥淒LL鈥濓紙濡傛灉鍙鐢錛夛紝鎴栬呴夋嫨 鈥滄帶鍒跺彴搴旂敤紼嬪簭鈥濓紙濡傛灉 鈥淒LL鈥濅笉鍙鐢錛夈 鏌愪簺鐗堟湰鐨 Visual Studio
涓嶆敮鎸侀氳繃浣跨敤鍚戝煎壋寤 DLL 欏圭洰銆傛偍鍙浠ョ◢鍚庡規よ繘琛屾洿鏀癸紝浠ュ皢欏圭洰緙栬瘧涓
DLL銆

鍦 鈥淲in32 搴旂敤紼嬪簭鍚戝尖濈殑 鈥滃簲鐢ㄧ▼搴忚劇疆鈥濋〉涓錛岄夋嫨 鈥滈檮鍔犻夐」鈥濅笅鐨 鈥滅┖欏圭洰鈥濄

鍗曞嚮 鈥滃畬鎴愨濆壋寤洪」鐩銆

鍚戝姩鎬侀摼鎺ュ簱娣誨姞綾

鑻ヨ佷負鏂扮被鍒涘緩澶存枃浠訛紝璇蜂粠 鈥滈」鐩鈥濊彍鍗曚腑閫夋嫨 鈥滄坊鍔犳柊欏光︹濄
灝嗘樉紺 鈥滄坊鍔犳柊欏光濆硅瘽妗嗐
鍦 鈥滅被鍒鈥濈獥鏍間腑錛岄夋嫨 鈥淰isual C++鈥濅笅鐨 鈥滀唬鐮佲濄 鍦 鈥滄ā鏉庫濈獥鏍間腑閫夋嫨 鈥滃ご鏂囦歡(.h)鈥濄 涓哄ご鏂囦歡閫夋嫨涓涓鍚嶇О錛屽
MathFuncsDll.h錛屽苟鍗曞嚮 鈥滄坊鍔犫濄 灝嗘樉紺轟竴涓絀虹櫧鏂囦歡銆

娣誨姞涓涓鍚嶄負鈥淢yMathFuncs鈥濈殑綆鍗曠被錛屼互鎵ц屽父瑙佺殑綆楁湳榪愮畻錛屽傚姞銆佸噺銆佷箻鍜岄櫎銆備唬鐮佸簲涓庝互涓嬪唴瀹圭被浼礆細

浠ュ甫鏈夐滆壊鍖哄垎鐨勬牸寮忔煡鐪嬪嶅埗鍒板壀璐存澘鎵撳嵃

// MathFuncsDll.h

namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);

// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);

// Returns a * b
static __declspec(dllexport) double Multiply(double a, double b);

// Returns a / b
// Throws DivideByZeroException if b is 0
static __declspec(dllexport) double Divide(double a, double b);
};
}

// MathFuncsDll.h

namespace MathFuncs
{
class MyMathFuncs
{
public:
// Returns a + b
static __declspec(dllexport) double Add(double a, double b);

// Returns a - b
static __declspec(dllexport) double Subtract(double a, double b);

// Returns a * b
static __declspec(dllexport) double Multiply(double a, double b);

// Returns a / b
// Throws DivideByZeroException if b is 0
static __declspec(dllexport) double Divide(double a, double b);
};
}

璇鋒敞鎰忔や唬鐮佹柟娉曞0鏄庝腑鐨 __declspec(dllexport) 淇楗扮︺ 榪欎簺淇楗扮︿嬌 DLL
鑳藉熷煎嚭璇ユ柟娉曚互渚涘叾浠栧簲鐢ㄧ▼搴忎嬌鐢ㄣ傛湁鍏蟲洿澶氫俊鎮錛岃峰弬瑙 dllexport, dllimport銆

鑻ヨ佷負鏂扮被鍒涘緩婧愭枃浠訛紝璇蜂粠 鈥滈」鐩鈥濊彍鍗曚腑閫夋嫨 鈥滄坊鍔犳柊欏光︹濄
灝嗘樉紺 鈥滄坊鍔犳柊欏光濆硅瘽妗嗐
鍦 鈥滅被鍒鈥濈獥鏍間腑錛岄夋嫨 鈥淰isual C++鈥濅笅鐨 鈥滀唬鐮佲濄 鍦 鈥滄ā鏉庫濈獥鏍間腑錛岄夋嫨 鈥淐++ 鏂囦歡(.cpp)鈥濄 涓烘簮鏂囦歡閫夋嫨涓涓鍚嶇О錛屽
MathFuncsDll.cpp錛屽苟鍗曞嚮 鈥滄坊鍔犫濄 灝嗘樉紺轟竴涓絀虹櫧鏂囦歡銆

鍦ㄦ簮鏂囦歡涓瀹炵幇鈥淢yMathFuncs鈥濈殑鍔熻兘銆備唬鐮佸簲涓庝互涓嬪唴瀹圭被浼礆細

浠ュ甫鏈夐滆壊鍖哄垎鐨勬牸寮忔煡鐪嬪嶅埗鍒板壀璐存澘鎵撳嵃

// MathFuncsDll.cpp
// compile with: /EHsc /LD

#include "MathFuncsDll.h"

#include <stdexcept>

using namespace std;

namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}

double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}

double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}

double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}

return a / b;
}
}

// MathFuncsDll.cpp
// compile with: /EHsc /LD

#include "MathFuncsDll.h"

#include <stdexcept>

using namespace std;

namespace MathFuncs
{
double MyMathFuncs::Add(double a, double b)
{
return a + b;
}

double MyMathFuncs::Subtract(double a, double b)
{
return a - b;
}

double MyMathFuncs::Multiply(double a, double b)
{
return a * b;
}

double MyMathFuncs::Divide(double a, double b)
{
if (b == 0)
{
throw new invalid_argument("b cannot be zero!");
}

return a / b;
}
}

鑻ヨ佸皢欏圭洰鐢熸垚涓 DLL錛岃蜂粠
鈥滈」鐩鈥濊彍鍗曚腑閫夋嫨
MathFuncsDll 鈥滃睘鎬...鈥濄 鍦ㄥ乏紿楁牸涓錛岄夋嫨 鈥滈厤緗灞炴р濅笅鐨 鈥滃父瑙勨濄
鍦ㄥ彸紿楁牸涓錛屽皢 鈥滈厤緗綾誨瀷鈥濇洿鏀逛負 鈥滃姩鎬佸簱(.dll)鈥濄
鍗曞嚮 鈥滅『瀹氣濅繚瀛樻洿鏀廣

璇存槑

濡傛灉鎮ㄤ粠鍛戒護琛岀敓鎴愰」鐩錛岃蜂嬌鐢
/LD 緙栬瘧鍣ㄩ夐」鎸囧畾杈撳嚭鏂囦歡搴斾負 DLL銆
鏈夊叧鏇村氫俊鎮錛岃峰弬瑙 /MD銆/MT銆/LD錛堜嬌鐢ㄨ繍琛屽簱錛夈

緙栬瘧璇ュ姩鎬侀摼鎺ュ簱錛屾柟娉曟槸閫夋嫨
鈥滅敓鎴愨濊彍鍗曚腑鐨 鈥滅敓鎴愯В鍐蟲柟妗堚濄
榪欐牱灝卞壋寤轟簡涓涓鍙渚涘叾浠栫▼搴忎嬌鐢ㄧ殑
DLL銆

閱讀全文

與vc動態鏈接庫dll編程深入淺出相關的資料

熱點內容
自己購買雲主伺服器推薦 瀏覽:422
個人所得稅java 瀏覽:761
多餘的伺服器滑道還有什麼用 瀏覽:192
pdf劈開合並 瀏覽:28
不能修改的pdf 瀏覽:752
同城公眾源碼 瀏覽:489
一個伺服器2個埠怎麼映射 瀏覽:298
java字元串ascii碼 瀏覽:79
台灣雲伺服器怎麼租伺服器 瀏覽:475
旅遊手機網站源碼 瀏覽:332
android關聯表 瀏覽:946
安卓導航無聲音怎麼維修 瀏覽:333
app怎麼裝視頻 瀏覽:431
安卓系統下的軟體怎麼移到桌面 瀏覽:96
windows拷貝到linux 瀏覽:772
mdr軟體解壓和別人不一樣 瀏覽:904
單片機串列通信有什麼好處 瀏覽:340
游戲開發程序員書籍 瀏覽:860
pdf中圖片修改 瀏覽:288
匯編編譯後 瀏覽:491