VS2010中 C++創建DLL圖解

一、DLL的創建?
創建項目: Win32->Win32項目,名稱:MyDLL


選擇DLL (D) ->完成.

1、新建頭文件testdll.h
testdll.h代碼如下:

#ifndef TestDll_H_
#define TestDll_H_
#ifdef MYLIBDLL
#define MYLIBDLL extern "C" _declspec(dllimport)?
#else
#define MYLIBDLL extern "C" _declspec(dllexport)?
#endif
MYLIBDLL int Add(int plus1, int plus2);
//You can also write like this:
//extern "C" {
//_declspec(dllexport) int Add(int plus1, int plus2);
//};
#endif


------------------------------------------------------

testdll.h也可以寫為:

#pragma once

#ifndef __AFXWIN_H__

? ? //........

#endif

#include<string>

using namespace std;

//數據、類型定義等

#define OUTAPI __declspec(dllexport)

OUTAPI int Add(int a, int b);



2、新建源文件testdll.cpp
testdll.cpp代碼如下:

#include "stdafx.h"
#include "testdll.h"
#include <iostream>
using namespace std;
int Add(int plus1, int plus2)
{
int add_result = plus1 + plus2;
return add_result;
}




3、新建模塊定義文件mydll.def
mydll.def代碼如下:

LIBRARY "MyDLL"
EXPORTS
Add ??@1


4、vs2010自動創建dllmain.cpp文件,它定義了DLL 應用程序的入口點。

dllmain.cpp代碼如下:
// dllmain.cpp : 定義 DLL 應用程序的入口點。
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
? ?? ?? ?? ?? ?? ?? ???DWORD??ul_reason_for_call,
? ?? ?? ?? ?? ?? ?? ???LPVOID lpReserved
? ?? ?)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
??break;
}
return TRUE;
}

最后,編譯生成MyDLL.dll文件和MyDLL.lib文件。



1>------ 已啟動生成: 項目: MyDLL, 配置: Debug Win32 ------

1> ?dllmain.cpp

========== 生成: 成功 1 個,失敗 0 個,最新 0 個,跳過 0 個 ==========

?

1>------ 已啟動生成: 項目: MyDLL, 配置: Debug Win32 ------

1> ?stdafx.cpp

1> ?testdll.cpp

1> ?MyDLL.cpp

1> ?正在生成代碼...

1> ? ? 正在創建庫 D:\Visual C++\工程\Libaray\MyDLL\Debug\MyDLL.lib 和對象 D:\Visual C++\工程\Libaray\MyDLL\Debug

【生成的DLL用DLL查看器,看到的導出函數名:Add,沒有多余的奇怪字符】

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/458438.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/458438.shtml
英文地址,請注明出處:http://en.pswp.cn/news/458438.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

js理解 call( ) | apply( ) | caller( ) | callee( )

被js的這幾個方法搞的this暈頭轉向&#xff0c;下定決心搞清楚&#xff1b;1、call( )和apply( ):兩者都可以將函數綁定到另外一個對象上去運行&#xff0c;只是參數的傳遞方式不同&#xff0c;兩者都可以使當前函數擁有另一個對象的屬性和方法&#xff0c;實現js下的繼承&…

上傳SVN丟失.a文件的問題

iOS項目上傳到svn中&#xff0c;.a文件丟失 用Cornerstone工具&#xff0c;解決這個問題 1.打開Cornerstone左上角&#xff0c;點Cornerstone->Preferences->Subversion 2.Global lgnores下面有一個Use default global ignores 默認這里方框中會打鉤&#xff08;這就是.a…

使用公用表表達式的遞歸查詢

微軟從SQL2005起引入了CTE(Common Table Expression)以強化T-SQL。公用表表達式 (CTE) 具有一個重要的長處&#xff0c;那就是可以引用其自身。從而創建遞歸 CTE。遞歸 CTE 是一個反復運行初始 CTE 以返回數據子集直到獲取完整結果集的公用表表達式。 當某個查詢引用遞歸 CTE 時…

C#委托實現C++ Dll中的回調函數

from:https://blog.csdn.net/ferrycooper/article/details/63261771很多的Dll都是C和C寫的&#xff0c;那么如果C#想要調用Dll中的函數怎么辦&#xff0c;尤其是Dll函數其中一個參數是函數指針的&#xff0c;即里面有回掉函數的用C#怎么實現&#xff1f; C中的回掉函數在C#中有…

安裝Birt方法

安裝BIRT 方法&#xff1a; 博客地址&#xff1a;http://www.mamicode.com/info-detail-850588.html 注意&#xff1a;在 Install new Software 中輸入地址&#xff1a;http://download.eclipse.org/birt/update-site/4.2-interim 看好了 出來的四項要全部選中 &#xff0c;然后…

iOS NSString和NSDate轉換

后臺返回的時間字符串不是標準的時間而是計算機時間的時候&#xff0c;我們需要將它們轉換為標準時間&#xff0c;再進行轉換。 //字符串轉為時間&#xff0c;時間格式自己定 NSString * time "1501776000"; //時間字符串 NSInteger num [time integerValue]; …

15個最好的HTML5前端響應式框架(2014)

文中的多個框架基于SASS創建&#xff0c;SCSS是一種比LESS更簡潔的樣式表編程語言&#xff0c;它能夠編繹成CSS&#xff0c;可復用CSS代碼&#xff0c;聲明變量&#xff0c;甚至是函數&#xff0c;類Ruby/Python的語法。參見&#xff1a; LESS vs SASS&#xff1f;選擇哪種CSS樣…

DLL導出類和導出函數

from:https://blog.csdn.net/goodluckmt/article/details/526912971、動態庫DLL中的類或者函數有時候要被其他的庫調用&#xff0c;因此需要被其他庫調用的類或者函數需要進行導出。 2、首先編寫需要導出的DLL&#xff0c;新建一個工程設置應用程序類型為DLL3、類的代碼如下 頭…

Nginx做web服務器linux內核參數優化

Nginx做web服務器linux內核參數優化Nginx提供web服務時Linux內核參數調整是必不可少的&#xff0c;其中在優化方面就需要我們格外的注意。在下面就是對Linux內核參數優化的詳細介紹&#xff0c;希望大家有所收獲。關于Linux內核參數的優化&#xff1a;net.ipv4.tcp_max_tw_buck…

iOS系統發布時間

發布日期 版本編號 更改2017年9月12日 iOS11 GM seed2017年6月19日 iOS10.3.32016年11月9日 iOS10.2 Beta2 發布iOS10.2測試版版2016年11月1日 iOS10.2 Beta1 發布iOS10.2測試版版2016年10月25日 iOS10.1 發布iOS10.1正式版2016年9月22日 iOS10.1 Beta 發布iOS10.1測試版2016年…

Tomacat服務器的安裝和配置

一&#xff0c; Tomcat服務器的下載地址(Apache Tomcat的官網): http://tomcat.apache.org/download-70.cgi 這里為了穩定性安裝的版本為7.0. 截止目前版本已經發行到了9.0. 二&#xff0c; 解壓下載的壓縮包之后直接進入傻瓜式的安裝。   下載文件的全名&#xff1a; apach…

函數指針與回調函數詳解

函數指針與回調函數詳解 1.什么是函數指針&#xff1f; 函數&#xff08;的&#xff09;指針就是指針。這個指針存放一個函數的地址&#xff0c;而函數的名稱就該函數的入口&#xff0c;即地址。這類似于數組名就是數組的首地址。我們可以通過反匯編直觀的查看到函數名和函數地…

【轉載】Direct3D基礎知識

原文&#xff1a;Direct3D基礎知識 重新從頭開始學習DX,以前太急于求成了,很多基礎知識都沒掌握就開始寫程序了,結果出了問題很難解決.1. D3D體系結構D3D與GDI處與同一層次,區別在于,D3D可以使用HAL(Hardware Abstraction Layer)通過DDI來訪問圖形硬件,充分發揮硬件性能.…

翻譯:程序員數據結構基礎:選擇正確的數據結構

本文轉載自GameDev.net&#xff0c;僅供學習交流。因為剛剛開始學習翻譯&#xff0c;難免有些疏漏&#xff0c;如果有哪些地方翻譯的不正確&#xff0c;請不吝告知&#xff0c;萬分感謝。 原文鏈接&#xff1a;http://www.gamedev.net/page/resources/_/technical/general-prog…

關于Xcode隱藏打印的logs的方法

https://www.cnblogs.com/jukaiit/p/5881062.html 第一步&#xff1a; 第二步&#xff1a; 第三步&#xff1a; 添加參數&#xff1a; Name &#xff1a;OS_ACTIVITY_MODE Value : disable

指針函數與函數指針的區別

首先它們之間的定義&#xff1a;1、指針函數是指帶指針的函數&#xff0c;即本質是一個函數&#xff0c;函數返回類型是某一類型的指針。 類型標識符 *函數名(參數表)int *f(x&#xff0c;y);首先它是一個函數&#xff0c;只不過這個函數的返回值是一個地址值。函數返回值必須用…

數組字典

#import <Foundation/Foundation.h>int main(int argc, const char * argv[]) {autoreleasepool { //把字典放到數組中NSDictionary *dic1{"name":"小明","class":"IOS8","age":"22"};NSDictionary *dic2{&…

C++走向遠洋——63(項目二2、兩個成員的類模板)

*/ * Copyright (c) 2016&#xff0c;煙臺大學計算機與控制工程學院 * All rights reserved. * 文件名&#xff1a;text.cpp * 作者&#xff1a;常軒 * 微信公眾號&#xff1a;Worldhello * 完成日期&#xff1a;2016年6月4日 * 版本號&#xff1a;V1.0 * 問題描述&…

iOS 抓包工具 charles工具

在Charles官網下載最新的 安裝包 在電腦上安裝完成之后&#xff0c;以 注冊碼 Registered Name: https://zhile.io License Key: 48891cf209c6d32bf4 進行注冊即可完成 在手機上面設置代理&#xff1a;輸入電腦的網絡IP以及端口號 以下為查找的步驟&#xff1a; 在手機上手…

指針數組與數組指針詳解

指針數組與數組指針詳解 1.什么是指針數組和數組指針&#xff1f; 指針數組&#xff1a;指針數組可以說成是”指針的數組”&#xff0c;首先這個變量是一個數組&#xff0c;其次&#xff0c;”指針”修飾這個數組&#xff0c;意思是說這個數組的所有元素都是指針類型&#xff0…