導航:首頁 > 編程語言 > 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編程深入淺出相關的資料

熱點內容
主力吸籌派發區域指標源碼 瀏覽:695
單片機pc的低位元組怎麼算 瀏覽:230
pythoneval函數源碼 瀏覽:242
linuxmongodb服務啟動 瀏覽:766
在哪裡下載核酸檢測app 瀏覽:310
esxi啟動虛擬機命令 瀏覽:969
軍工級單片機 瀏覽:113
伺服器安全保護是什麼意思 瀏覽:789
刪除運行命令 瀏覽:720
龍之召喚伺服器如何 瀏覽:119
linux目錄跳轉 瀏覽:368
程序員和老闆稱兄道弟 瀏覽:759
直播網路連接源碼 瀏覽:736
用安卓手機怎麼登錄蘋果手機id 瀏覽:710
論文查重工具源碼 瀏覽:401
android銀聯demo 瀏覽:86
智能演算法發展 瀏覽:351
房車露營地用什麼app 瀏覽:70
spark編程指南python 瀏覽:553
phparray源碼 瀏覽:1002