1. 程式人生 > >VC下Non-MFC DLL建立和使用

VC下Non-MFC DLL建立和使用

在VC2010下新建一個Win32 Project “myDll”,選擇工程屬性為dll,其它不變。

VC預設生成的檔案當中,沒有myDll.h檔案,手動新增一個。並加入如下程式碼:

//MyDLL.h
extern "C" _declspec(dllexport) int Max(int a, int b);
extern "C" _declspec(dllexport) int Min(int a, int b);

在myDll.cpp里加入如下程式碼:

// myDll.cpp : Defines the exported functions for the DLL application.


#include "stdafx.h"
#include "myDll.h"

#include<stdio.h>
#include"MyDll.h"

int Max(int a, int b)
{
	if(a>=b)
		return a;
	else
		return b;
}

int Min(int a, int b)
{
	if(a>=b)
		return b;
	else
		return a;
}

在Solution下新建一個工程“myDllTest”,在myDllTest.cpp中加入以下程式碼:

// myDllTest.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "windows.h"
#include <iostream>
using namespace std;
//#include "..\myDll\myDll.h"


int _tmain(int argc, _TCHAR* argv[])
{
	int a, b;
	cout << "Please input two numbers:" << endl;
	cin >> a >> b;

	typedef int (*min)(int, int);
	typedef int (*max)(int, int);
	HMODULE hModule = LoadLibraryA("myDll.dll");
	min Min = (min)GetProcAddress(hModule, "Min");
	min Max = (max)GetProcAddress(hModule, "Max");

	int min_val = Min(a, b);
	int max_val = Max(a, b);
	cout << "The max number is " << max_val << endl;
	cout << "The min number is " << min_val << endl;
	return 0;
}

右擊"myDllTest"工程,設定一下“Dependece”--依賴"myDll"工程。

程式執行如下圖所示:

說明使用動態連結庫成功。>_<

相關推薦

VCNon-MFC DLL建立使用

在VC2010下新建一個Win32 Project “myDll”,選擇工程屬性為dll,其它不變。 VC預設生成的檔案當中,沒有myDll.h檔案,手動新增一個。並加入如下程式碼: //MyDLL.h extern "C" _declspec(dllexport) int

MFC建立使用執行緒的方法

有關建立執行緒的問題有三種方法: 1.C語言函式,呼叫_beginthread(); 2.API函式,呼叫CreateThread(); 3.MFC函式,呼叫AfxBeginThread(); 推薦使用MFC函式AfxBeginThread(); 利用

vxworks的指令碼script建立使用(相當於windows的autoexec.bat)

首先,製作的vxworks需要支援【指令碼啟動】元件:  其次,BSP/config.h的【boot line】中要新增要啟動的指令碼,這裡假設名字為start.txt: 注意上面的start.txt前面一定要有路徑名,否則啟動後報找不到指令碼檔案錯誤! 修改完畢後

五十五、windowsLinux虛擬環境的建立使用

一、問題: 安裝同一個包的不同版本,後安裝的包會把原來安裝的包覆蓋掉。這樣,如同一臺機器上兩個專案依賴於相同包的不同版本, 則會導致一些專案執行失敗。 解決的方案就是:虛擬環境。 虛擬環境是真實

VC++6.0基於MFC框架利用CInternetSessionCHttpFile獲取網頁資料(附程式碼)

例:從網站http://qq.ip138.com/weather/guangdong/GuangZhou.htm獲取近三天的日期、天氣、溫度、風向,程式碼如下: //新增標頭檔案 #include <afxinet.h> //獲取網路資料 void CSensorSysDlg:

vs2012環境VC++與MFC工程建立

1.C++語言 最主要的軟體開發語言,用於開發所有PC軟體,手機軟體以及嵌入式軟體等。 VisualC++,gcc是C++語言編譯器,VC主要開發Windows桌面軟體,gcc主要針對UNIX和LINUX作業系統,開發嵌入式軟體和手機軟體等。 MF

MFC建立dll呼叫dll

一、建立dll檔案:1、開啟VS2010,新建Win32專案,如下圖所示:2、應用程式型別,選取DLL3、新增新類 DigitalProc,在標頭檔案 DigitalProc.h中新增如下程式碼:#if

VC6.0 建立 MFC DLL

一:建立MFC shared DLL 1.使用def檔案: 新增新的類CExportDll,,將新類中匯出函式 放在 def檔案中。例子如下: // ExportDll.h: interface for the CExportDll class. // /////////////////

Linux靜態庫、動態庫的建立使用

Linux下靜態庫、動態庫的建立和使用 Linux庫檔名由:字首lib、庫名和字尾3部分組成,靜態庫通常以.a作為字尾,動態庫以.so作為字尾, Linux下把動態庫叫做共享庫,so即shared object的縮寫。 靜態庫是程式編譯連結時使用,動態庫是程式執行時使用。

Win32 DLL建立使用

Win32 DLL 0 建立Win32 DLL 專案 VS新建》專案》Win32專案》確定》下一步》DLL、匯出符號》完成 1 匯出標頭檔案 A.h #ifdef CHESS_LIB_EXPORTS   #define CHESS_LIB_API __declspec(

vs環境C++dll生成使用(基礎篇)

動態庫和靜態庫: 動態庫:全名動態連結庫,用於將你的函式封裝,讓別人只能呼叫,不能看你的實現程式碼。由引入庫和dll組成:引入庫包含匯出的函式和變數名,dll包含實際的函式和資料,執行時載入訪問dll檔案。  Windows API中的所有函式都封裝在dll裡面,最重要的三個:

windows動態庫dll靜態庫編譯使用問題

window下動態庫dll和靜態庫lib問題 windows下動態庫dll和靜態庫lib的聯絡和區別,以及示例匯出個動態庫 https://blog.csdn.net/lifei092/article/details/79630273 問題: 1,生成dll時,同時生成lib是做

VC++6.0 MFC獲取當前工作路徑可執行檔案路徑

1. 獲取Debug或Release所在的路徑 CString GetModuleDir() { HMODULE module = GetModuleHandle(0); char pFileName[MAX_PATH]; GetModuleFileName(mod

VC++6.0 MFC顯示模態對話方塊非模態對話方塊

1、模態對話方塊 #include "AddDataDlg.h"//新增標頭檔案 CAddDataDlg AddData_Dialog;//在標頭檔案中定義對話方塊物件(CAddDataDlg為該對話方塊對應的類) int nReturn = AddData_Dialog.DoModal

動態連結庫(DLL)的建立使用

最近想做個記錄日誌的C++庫,方便後續使用。想著使用動態庫,正好沒用過,學習下。概念這裡不贅述。學習過程中碰到的幾點,記錄下來。學習是個漸進的過程,本文也是一個逐漸完善的過程。 一、Static Library 標準Turbo 2.0中的C函式庫(scanf、pringf、memc

linux建立賬戶並自動生成主目錄主目錄的檔案 linux建立賬戶並自動生成主目錄主目錄的檔案

linux建立賬戶並自動生成主目錄和主目錄下的檔案   # useradd -d /home/test -m test; 然後給test設定密碼。 # passwd test;       1. useradd

MFC(2):底層實現視窗、MFC視窗建立與訊息對映、windows字符集嚮導的使用

=====================從底層去實現一個視窗=============== 程式入口是WinMain函式 視窗的建立步驟: -->  設計(WNDCLASS)  -->  註冊(RegisterClass)  -->

DLL建立使用

按照網上步驟建立一個產生.dll的testdll專案 testdll --Debug --testdll.dll (*) --testdll.lib (*) --testdll --Debug --testdll.cpp --testdl

Macidea從零建立springboot專案以及整合mybatismybatis逆向生成工具-springboot(1)

前言 近期從SSM框架轉為springboot開發restful風格的介面。網路上的資源質量良莠不齊,看了很多部落格,有很多專案名字、專案程式碼、專案id等等等的東西統統一模一樣但是按著來卻是執行不通,我就奇了怪了,你們都是統一思考的麼? 2018-11-2

MFC對檔案及資料夾的操作(複製、剪、刪除、建立資料夾,寫檔案)

1 void CFileOperationDlg::OnButtonCopy() 2 { 3 // TODO: Add your control notification handler code here 4 UpdateData(TRUE); 5 CString m_