參照了”夢在天涯“的Blog做了下面這個Test例子:
-------------------------------------------------------------------------------------
用Win32 Dynamic-Link Library
創(chuàng)建
Non-MFC DLL
動態(tài)鏈接庫
測試用例->
方法一:
Test_NonMFCDLL.h:
extern "C" _declspec(dllexport)?double Add(double a, double b);
extern "C" _declspec(dllexport) double Mult(double a, double b);
Test_NonMFCDLL.cpp:
#include"Test_NonMFCDLL.h"
double? Add(double a, double b)
{
???????return (a+b);
?}
double? Mult(double a, double b)
{
???????return (a*b);
}
編譯成功后生成Test_NonMFCDLL.dll,Test_NonMFCDLL.lib
方法二:
刪除上個例子工程中的Test_NonMFCDLL.h文件,新建文本文件Test_NonMFCDLL.def
LIBRARY Test_NonMFCDLL
EXPORTS
Add??@1???? //中間要有個空格
Mult? @2
現(xiàn)在就測試一下你所寫的dll,先將Test_NonMFCDLL.dll,Test_NonMFCDLL.lib拷貝到當前工程所在的目錄下面
1.隱式鏈接
UseDLL.h:
#pragma comment(lib,"Test_NonMFCDLL.lib")
extern "C"_declspec(dllimport) double Add(double a,double b);
extern "C"_declspec(dllimport)?double Mult(double a,double b);
UseDLL.cpp:
#include"TestUseDLL.h"
#include<stdio.h>
void main()
{
????double res=Add(1.0,2.0);
????printf("%f\n",res);
}
2 .顯式鏈接
UseDLL.cpp:
#include<stdio.h>
#include<windows.h>
void main(void)
{
????typedef? double (*p)??? (double a,double b);
????p Add;
????HINSTANCE hDLL;
????hDLL=LoadLibrary("Test_NonMFCDLL.dll");// 加載動態(tài)鏈接庫dll 文件;?
????Add=(p)GetProcAddress(hDLL,"Add");
??? /*或使用GetProcAddress(hDLL,MAKEINTRESOURCE(1))?,看上面的Add??@1*/
????double res=Add(1.0,2.0);
????printf("%f\n",res);
????FreeLibrary(hDLL);// 卸載dll 文件;
}