C# vs2010 项目打包 关于OCX组件、dll程序集

C# vs2010 项目打包 关于OCX组件、dll程序集
C# vs2010 项目打包 关于OCX组件、dll程序集

C# vs2010 项目打包关于OCX组件、dll程序集

关于vs2010打包,亲们发现的问题的多多交流。不罗嗦

1、创建项目:在解决方案里右击->【添加】->【新建项目】(注意:这里选择的是解决方案,新建的是项目)

2、把自己的程序添加到刚创建的项目中:(两种方法,推荐第二种)

1)、选中刚才创建的项目(煤矿安全评估系统)【右击】->【添加】->【项目输出】

确定后,会把你需要打包的程序bin下的关联的dll自动加载到(应用程序文件夹下),但这种方法加载的dll不完整,需要自己后来把没加载的重新考进来。然后在里面新建文件夹分类。

2)、选中(应用程序文件夹下)直接把需要打包项目bin下的文件拖进(应用程序文件夹)里。可以重新建立文件夹给组件分类。。

注意:关于程序需要注册的控件问题(这里分两种ocx组件和dll程序集)如果您的项目中用到控件注册了,为保证用户安装后能正常运行需要给他们在安装的时候把程序需要的控件一块注册了。对于刚才拖进的一堆文件里,找到需要注册的文件。选择后在属性里找到相关注册属性。

注册属性分四种:我们一般只用三种,vsdrfDoNotRegister:从不注册,vsdrfCOMRelativePath:注册需要注册的dll文件,vsdrfCOMSelfReg:注册ocx 组件。我们只注册后面这两种就行(默认是第一种)

3、快捷方式、卸载程序的添加:

快捷方式,根据左侧的三类文件夹一般都存在,选中项目主运行程序,右击创建快捷方式即可。

1)应用程序文件夹(安装后的程序源文件):卸载程序的添加

添加文件,去选择c盘windows里system32下的msiexec.exe程序添加进来。2)用户的程序菜单:可以新建文件夹,在这里创建快捷方式和卸载程序

程序菜单里的卸载程序处理:选中项目(左击)在属性项里找到ProductCode属性,把那段代码复制出来

找到卸载的快捷方式属性里的Arguments属性:前面加个/x 后面是刚才复制的代码。注意x 后面有空格

3)用户桌面:添加程序的快捷方式

注意:在快捷方式里别忘了换个图标

4、修改项目默认路径:

把项目的Manufacture属性的名字重命名即可

5、修改系统必备

选中刚创建的项目右击找到属性,点击系统必备,在弹出的框里选择第二个即可

好了。打包完成了。生成以下刚才创建的项目就可以了。

VS2010程序打包、发布详细流程

VS2010程序打包、发布详细流程 一、开发环境 1、操作系统:Windows 7 64位(本机测试,其他系统亦可,无特殊要求) 2、开发软件:Microsoft Visual Studio 2010 3、目标软件:MFC 二、详细流程 1、新建项目 运行VS2010,在VS2010中依次选择“新建项目→其他项目类型→Visual Studio Installer→安装项目”,输入项目名称和路径,如图1所示(此次分别设置项目名称为“MySetupMaker”,项目路径在E盘根目录),点击确定按钮,进入主界面,如图2所示。 图1 新建项目

图2 项目主界面 这时在VS2010中将有三个文件夹: 1)“应用程序文件夹”:表示要安装的应用程序需要添加的文件; 2)“用户的…程序?菜单”:表示应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3)“用户桌面”:表示这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、添加文件 “应用程序文件夹”右键点击,出现下拉菜单,选择“添加 文件(I)…”,将需 要打包的文件全部添加到该目录下,如图3所示。

图3 添加文件到“应用程序文件夹” 此处添加的文件一般是已经编译过文件,一般是应用程序debug目录下的文件。如果需要添加其他文件,亦可以通过这种方式来添加。此外,如果debug 下面有子文件夹,则需要选择“添加 文件夹(F)”,首先在“应用程序文件夹”下创建一个文件夹,然后按照上述方法,添加文件到该文件夹即可,如图4所示。 图4 添加文件夹 备注: 1)此处添加的文件都会在软件安装完成后出现在软件的安装目录; 2)如果需要修改软件图标,则需要将软件的图标文件(.ico)也添加进来。 3、设置系统必备项 在“解决方案资源管理器”中,选择当前创建的项目名称(MySetupMaker),点击右键,选择“属性”,在弹出的“MySetupMaker属性页”中选择“系统必备(P)…”,如图5、图6、图7所示。

C C++动态链接库的创建与调用

C/C++中动态链接库的创建和调用 1.动态链接库的创建步骤: 创建Non-MFC DLL动态链接库 1.打开File —> New —> Project选项,选择Win32 Dynamic-Link Library —>sample project —>工程名:DllDemo 2.新建一个.h文件DllDemo.h 并添加如下代码: #ifdef DllDemo_EXPORTS #define DllAPI _declspec(dllexport) #else #define DllAPI _declspec(dllimport) extern “C” // 原样编译 { DllAPI int _stdcall Max(int a,int b); //_stdcall使非C/C++语言内能够调用API } #endif 3.新建一个.cpp文件,并添加如下代码 #include "DllDemo.h" DllAPI int __stdcall Max(int a,int b) { if(a==b) return NULL; else if(a>b) return a; else return b; } 4.编译程序生成动态链接库 1.2 用.def文件创建动态连接库DllDemo.dll 1、删除DllDemo工程中的DllDemo.h文件。 2、在DllDemo.cpp文件头,删除#include DllDemo.h语句。 3、向该工程中加入一个文本文件,命名为DllDemo.def并写入如下语句: LIBRARY MyDll EXPORTS Max@1 4、编译程序生成动态连接库。 2.动态链接库的调用步骤 2.1 隐式调用 1.建立DllCnsTest工程 2.将文件DllDemo.dll、DllDemo.lib拷贝到DllCnsTest工程所在的目录 3.在DllCnsTest中添加如下语句: #define DllAPI _declspec(dllimport) #pragma comment(lib,”DllDemo.lib”) extern “C” { DllAPI int _stdcall Max(int a,int b);

C#windows应用程序打包(VS2010+SQLServer2008) - SQL Server(mssql)数据库栏目 - 红黑联盟

C#windows应用程序打包(VS2010+SQLServer2008) 2014-07-09 0 个评论 来源:飘渺菌 收藏 我要投稿作者 : 飘渺菌 原文地址:https://www.360docs.net/doc/c99602204.html,/qingdujun/article/details/37563661 开发环境:VS2010+SQL Server 2008 操作系统:win7_32bit 旗舰版 开发语言:C# 项目名称:学生寄宿管理系统 下面开始介绍:如何给windows应用程序打包? 第一步: 打开VS2010,打开你要打包的项目,然后右击"解决方案",”添加“,"新建项目",弹出如下图所示界面: 点击”安装和部署“左边的三角形,选择下面的”Visual studio Installer“,再选择”安装项目“,同时将下面的命名改为”Setup“点击确定。 第二步: 点击解决方案里面生成的”Setup“,将属性中的ProtectName改为”学生寄宿系统 V1.0 “(你的

项目名字) 第三步: 右击解决方案里面的”Setup“,然后再选择”属性“。弹出属性页界面如下第二张图: 再点击里面的系统必备。 重要一点:勾选"从与我的应用程序相同的位置下载系统必备组件(D)",其实意思就是说你勾选后,生成安装项目时,在你安装项目的路径下,会有你在系统必备组件列表中勾选的组件.(系统自动完成,这一点还不错,不需要你自己去下载组件) 1)、Windows Installer 3.1(必选) 2)、.NET Framework 3.5 (可选)参考最后说明 3)、Crystal Report Basic for Visual Studio2008(x86,x64) (可选) 项目中用到了水晶报表就需要勾选此项

VC++动态链接库创建和调用全过程详解

1.概论 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 对动态链接库,我们还需建立如下概念: (1)DLL 的编制与具体的编程语言及编译器无关 只要遵循约定的DLL接口规范和调用方式,用各种语言编写的DLL都可以相互调用。譬如Windows提供的系统DLL(其中包括了Windows的API),在任何开发环境中都能被调用,不在乎其是Visual Basic、Visual C++还是Delphi。 (2)动态链接库随处可见 我们在Windows目录下的system32文件夹中会看到kernel32.dll、user32.dll和gdi32.dll,windows的大多数API都包含在这些DLL中。kernel32.dll中的函数主要处理内存管理和进程调度;user32.dll中的函数主要控制用户界面;gdi32.dll中的函数则负责图形方面的操作。 一般的程序员都用过类似MessageBox的函数,其实它就包含在user32.dll这个动态链接库中。由此可见DLL对我们来说其实并不陌生。 (3)VC动态链接库的分类 Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。 非MFC动态库不采用MFC类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。 由于本文篇幅较长,内容较多,势必需要先对阅读本文的有关事项进行说明,下面以问答形式给出。 问:本文主要讲解什么内容? 答:本文详细介绍了DLL编程的方方面面,努力学完本文应可以对DLL有较全面的掌握,并能编写大多数DLL程序。 问:如何看本文? 答:本文每一个主题的讲解都附带了源代码例程,可以随文下载(每个工程都经WINRAR压缩)。所有这些例程都由笔者编写并在VC++6.0中调试通过。

VS2010发布、打包安装程序超全超详细

1、 在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 9、应用程序文件夹中点右键添加文件:表示添加要打包的文件; 添加的文件一般是已经编译过应用程序的debug目录下的文件;

如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 10、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备: 然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图” “启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0; 这样.NET Framework 2.0上创建的项目在安装时,就不会安装.NET3.5或其他版本, 也不会重启(解决.NET 2.0 创建的项目,安装.NET FrameWork3.5的问题)。 11、设置安装文件的目录(路径): 创建的项目名称(setup1)点击左键(不是右键),在属性中设置参数如下图:

VC++ MFC DLL动态链接库编写详解

VC++ MFC DLL动态链接库编写详解(2008-07-10 17:38:40) 标签:it分类:com技术然能用DLL实现的功能都可以用COM来替代,但DLL的优点确实不少,它更容易创建。本文将讨论如何利用VC MFC来创建不同类型的DLL,以及如何使用他们。 一、DLL的不同类型 使用VC++可以生成两种类型的DLL:MFC扩展DLL和常规DLL。常规DLL有可以分为动态连接和静态连接。Visual C++还可以生成WIN32 DLL,但不是这里讨论的主要对象。 1、MFC扩展DLL 每个DLL都有某种类型的接口:变量、指针、函数、客户程序访问的类。它们的作用是让客户程序使用DLL,MFC扩展DLL可以有C++的接口。也就是它可以导出C++类给客户端。导出的函数可以使用C++/MFC数据类型做参数或返回值,导出一个类时客户端能创建类对象或者派生这个类。同时,在DLL中也可以使用DLL和MFC。 Visual C++使用的MFC类库也是保存在一个DLL中,MFC扩展DLL动态连接到MFC代码库的DLL,客户程序也必须要动态连接到MFC代码库的DLL。(这里谈到的两个DLL,一个是我们自己编写的DLL,一个装MFC类库的DLL)现在MFC代码库的DLL也存在多个版本,客户程序和扩展DLL都必须使用相同版本的MFC代码DLL。所以为了让MFC扩展DLL能很好的工作,扩展DLL和客户程序都必须动态连接到MFC代码库DLL。而这个DLL必须在客户程序运行的计算机上。 2、常规DLL 使用MFC扩展DLL的一个问题就是DLL仅能和MFC客户程序一起工作,如果需要一个使用更广泛的DLL,最好采用常规DLL,因为它不受MFC的某些限制。常规DLL也有缺点:它不能和客户程序发送指针或MFC派生类和对象的引用。一句话就是常规DLL和客户程序的接口不能使用MFC,但在DLL和客户程序的内部还是可以使用MFC。 当在常规DLL的内部使用MFC代码库的DLL时,可以是动态连接/静态连接。如果是动态连接,也就是常规DLL需要的MFC代码没有构建到DLL中,这种情况有点和扩展DLL类似,在DLL运行的计算机上必须要MFC代码库的DLL。如果是静态连接,常规DLL里面已经包含了需要的MFC代码,这样DLL的体积将比较大,但它可以在没有MFC代码库DLL的计算机上正常运行。 二、建立DLL 利用Visual C++提供的向导功能可以很容易建立一个不完成任何实质任务的DLL,这里就不多讲了,主要的任务是如何给DLL添加功能,以及在客户程序中利用这个DLL 1、导出类 用向导建立好框架后,就可以添加需要导出类的.cpp .h文件到DLL中来,或者用向导创建C++ Herder File/C++ Source File。为了能导出这个类,在类声明的时候要加“_declspe c(dllexport)”,如:

演练:创建和使用动态链接库 (C++)

Visual C++ 指导教程 演练:创建和使用动态链接库(C++) Visual Studio 2010 其他版本 0(共1)对本文的评价是有帮助评价此主题 我们将创建的第一种类型的库是动态链接库(DLL)。使用DLL 是一种重用代码的绝佳方式。您不必在自己创建的每个程序中重新实现同一例程,而只需对这些例程编写一次,然后从需要该功能的应用程序引用它们即可。 本演练涵盖以下内容: ?创建新的动态链接库(DLL) 项目。 ?向动态链接库添加类。 ?创建引用动态链接库的应用程序。 ?在控制台应用程序中使用类库的功能。 ?运行应用程序。 系统必备 本主题假定您具备C++ 语言的基础知识。如果您是刚开始学习C++,建议您参阅Herb Schildt 编写的“C++ Beginner's Guide”(《C++ 初学者指南》),该书可从 https://www.360docs.net/doc/c99602204.html,/fwlink/?LinkId=115303在线获得。 创建新的动态链接库(DLL) 项目 1.从“文件”菜单中,选择“新建”,然后选择“项目…”。 2.在“项目类型”窗格中,选择“Visual C++”下的“Win32”。 3.在“模板”窗格中,选择“Win32 控制台应用程序”。 4.为项目选择一个名称,如MathFuncsDll,并将其键入“名称”字段。为解决方案选择一个名 称,如DynamicLibrary,并将其键入“解决方案名称”字段。 5.单击“确定”启动Win32 应用程序向导。在“Win32 应用程序向导”对话框的“概述”页中, 单击“下一步”。

6.在“Win32 应用程序向导”中的“应用程序设置”页中,选择“应用程序类型”下的“DLL”(如果 可用),或者选择“控制台应用程序”(如果“DLL”不可用)。某些版本的Visual Studio 不支持通过使用向导创建DLL 项目。您可以稍后对此进行更改,以将项目编译为DLL。 7.在“Win32 应用程序向导”的“应用程序设置”页中,选择“附加选项”下的“空项目”。 8.单击“完成”创建项目。 向动态链接库添加类 1.若要为新类创建头文件,请从“项目”菜单中选择“添加新项…”。将显示“添加新项”对话框。 在“类别”窗格中,选择“Visual C++”下的“代码”。在“模板”窗格中选择“头文件(.h)”。为 头文件选择一个名称,如MathFuncsDll.h,并单击“添加”。将显示一个空白文件。 2.添加一个名为“MyMathFuncs”的简单类,以执行常见的算术运算,如加、减、乘和除。代 码应与以下内容类似: 复制 // 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, dou ble b); // Returns a * b static __declspec(dllexport) double Multiply(double a, dou ble b); // Returns a / b // Throws DivideByZeroException if b is 0 static __declspec(dllexport) double Divide(double a, doubl e b); }; } 3.请注意此代码方法声明中的__declspec(dllexport)修饰符。这些修饰符使DLL 能够导出 该方法以供其他应用程序使用。有关更多信息,请参见dllexport, dllimport。

打包过程vs2010(包含卸载功能、生成一个exe文件)

1、在vs2010 选择“新建项目”----“其他项目类型”----“Visual Studio Installerà“安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的…程序?菜单”表示:应用程序安装完,用户的“开始菜单”中的显示的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data

然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性

选择系统必备 然后选择.NET的版本,和Windows Installer3.1(可选项)

选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork 组件;但是安装包会比较大。 VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”à“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

vs打包方案

.net打包/C#WinFrom程序打包/图解.net打包/.net安装部署图解/VS2008项目的安装与部署图解 一、应用程序文件夹操作 1、新建一个安装项目,起名“测试打包” 这里要记住路径了,不然,打完了找不着安装包在哪里,可就说不过去了,呵呵! 2、这里就会出现三个文件夹,不用多说一看就明白意思,点“应用程序文件夹-->添加-->文件夹

这里的作用就是好管理,重启一下名字,这里我就叫它“测试打包系统” 3、在“测试打包系统”文件夹上右键-->添加-->项目输出 下一步:添加主输出 一般这个就够了,当然你还有别的资源的话就要添加上去了! 4、接下来在“应用程序文件夹”下依些建几个文件夹,我建了3个

Images里我放的是图片,2个ICO和1个BMP,后面会用到! Unit放置卸载的文件,这里你记住有这么回事就行了,下面专门会讲这个文件是怎么来的! 最下面的一个就不用多说了,上面操作过了,放了一个主输出文件! 到这里一个简单的打包项目已完成了,呵呵,右键生成一下,在项目目录中找着安装文件就可以运行安装的用了! 但是这样的安装包,你安装完一不小心还找不着安装在哪里去了,呵,因为这样只有在安装文件夹里有东东,而我们所熟悉的开始菜单和桌面上没东西啊!不方便,那就给加上去吧! 二、开始菜单-->程序-->里添加内容操作 1、点“用户的“程序”菜单”,新建一个文件夹!步骤和前面一样,不细说!

我起名叫“测试打包系统” 2、在中间的桌口中(上图的名称下面部分位置啊),右键-->创建新的快捷方式,出现下面的界面 选择“应用程序文件夹”里面的,也就是我们添加的主输出文件! 3、更改新添加"快捷方式的属性" 看到了吧,这里我更改了一下name和Icon,更改Icon,看到上图中的浏览了吧,打着前面Images下面的ICO文件就可以了!

VC++ 2017 动态链接库的创建和使用总结

Visual studio c++ 2017 动态链接库的创建和使用总结 一动态链接库的创建两种方式: 1、只有从文件->新建->项目->Windows桌面-> Windows桌面向导->选择“动态链接 库(.dll)->生成解决方案,才会生成.dll和.lib文件。 (1)在头文件声明中(注意要在头文件变量和函数声明中,而不是在变量和函数的定义中声明),不加extern “C”修饰,编译成DLL后,用depends.exe查看导出函数名。 可以看出,导出的函数名都被编译器篡改了。

(2)在头文件声明中,变量和函数名前加extern “C”修饰后,编译成DLL后,再用depends.exe查看导出函数名。 可以看出,用extern “C”修饰的函数名,编译后函数名保持不变。类及成员函数不能用extern “C”修饰,编译成DLL后,成员函数名发生了改变。 2、如果从文件->新建->项目->动态链接库(DLL)->生成解决方案,就只生成.dll,不生成.lib。

二动态链接库的调用两种方式: 1、显式调用 (1)使用显式调用的前提:创建的DLL,编译时不要篡改函数名称,定义函数名时,可用extern “C”修饰函数名,保证编译时,函数名不被篡改。否则GetProcAddress( )不能正确地获取dll中的函数名。 但是导出的类不能使用extern “C”修饰。 (2)使用显式调用的优点:不用动态链接库的.h和.lib文件,只要有.dll文件就可调用库函数,使用LoadLibrary(),在需要调用.dll中的库函数时,才动态加载到内存中,使用完毕后,可以用FreeLibrary()释放内存中的dll;使用GetProcAddress( )获取dll中的函数名。必须事先知道dll中的函数名和形式参数。 (3)使用显式调用缺点:调用每个函数时,都必须使用 GetProcAddress( )获取dll中的函数名,并转换成原来的函数,比较麻烦。而隐式调用DLL函数,由于使用了DLL的头文件.h,使用起来非常方便。 2、隐式调用 (1)隐式调用DLL函数缺点: 应用程序加载时,在内存中载入DLL动用库中的函数、变量、或类。使用完毕后,DLL 也不会从内存中释放。 .lib包含了库函数的入口,但不包含函数代码,应用程序调用时,才从dll中载入。(2)隐式调用DLL函数优点: 应用程序调用dll时,需要.lib和.h文件,在应用程序.exe文件夹debug或者release 中有DLL文件,即.h、.lib和.dll三个文件,在应用程序中直接使用DLL中的类和函数,可以不考虑编译DLL函数和变量名发生改变的问题。不需要像显式调用那样,函数需要 用 GetProcAddress( )一一获取。 隐式调用DLL中的变量、函数和类,有两种方法: (1)在主程序中包含DLL的头文件dll.h,在main( )前加上#pragma comment(lib,”dll.lib”),没有分号,再在debug或release中复制DLL.dll。 (2)在主程序中包含DLL的头文件dll.h,在项目属性->链接器->添加依赖项中加上“dll.lib;“,再在debug或release中复制DLL.dll,即可。

(动态链接库)DLL编写与使用方法

DLL的创建与调用 1、DLL的概念 DLL(Dynamic Linkable Library),动态链接库,可以向程序提供一些函数、变量或类。这些可以直接拿来使用。 静态链接库与动态链接库的区别: (1)静态链接库与动态链接库都是共享代码的方式。静态链接库把最后的指令都包含在最终生成的EXE 文件中了;动态链接库不必被包含在最终EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。 (2)静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 动态链接库的分类:Visual C++支持三种DLL,它们分别是Non-MFC DLL(非MFC动态库)、MFC Regular DLL(MFC规则DLL)、MFC Extension DLL(MFC扩展DLL)。非MFC动态库不采用MFC 类库结构,其导出函数为标准的C接口,能被非MFC或MFC编写的应用程序所调用;MFC规则DLL 包含一个继承自CWinApp的类,但其无消息循环;MFC扩展DLL采用MFC的动态链接版本创建,它只能被用MFC类库所编写的应用程序所调用。 2、创建一个DLL 2.1 非MFC的DLL 2.1.1声明导出函数: extern “C” __declspec(dllexport) int add(int a, int b); 其中extern “C”为声明为C编译。由于C++编译器在编译的时候会造成其函数名的该变,在其他应用程序中导致函数不可调用,而C编译器则不会在编译后改变其函数名。这样如果用C编译的程序来调用该dll中的函数时,可能会造成找不到该函数。 __declspec(dllexport)表示该函数为DLL输出函数,即其他应用程序可以调用该函数 从dll中声明输出函数有两种方式: (1)另外一种方式是采用模块定义(.def) 文件声明,.def文件为链接器提供了有关被链接程序的导出、属性及其他方面的信息。 (2)用__declspec(dllexport)来声明函数 如果使用Visual C++来创建dll,对于同样用VC创建的exe来说,调用dll没有什么问题。而如果用其他工具来创建的exe来调用dll,就会出现问题。因为即使你不用C++编译器,Microsoft C编译器也会损害C函数。当用__stdcall将函数输出时,C编译器会将函数改为_func@1的形式。在这里需要在.def 文件中加入EXPORTS节来输出函数: EXPORTS func 这样,dll将用func函数名来输出函数。 另一种方式是用#pragma (linker, “/exports:func=_func@1”),告诉编译器输出函数func,这种方式没有前一种好。 如果通过VC++编写的DLL欲被其他语言编写的程序调用,应将函数的调用方式声明为__stdcall方式,WINAPI都采用这种方式,而C/C++ 缺省的调用方式却为__cdecl。__stdcall方式与__cdecl对函数名最终生成符号的方式不同。若采用C编译方式(在C++中需将函数声明为extern "C"),__stdcall调用约定在输出函数名前面加下划线,后面加“@”符号和参数的字节数,形如_functionname@number;

vs2010发布、打包安装程序(超全超详细)

1、在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer→ “安装项目”: 命名为:Setup1 。 这是在VS2010中将有三个文件夹, 1.“应用程序文件夹”表示要安装的应用程序需要添加的文件; 2.“用户的‘程序’菜单”表示:应用程序安装完,用户的“开始菜单”中的显示 的内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; 3.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件; 如果debug 下面有子文件夹则需要“添加文件夹”,例如:data 然后把对应的子文件里的内容添加到此文件夹中;

把需要创建程序快捷方式的图标也添加进来:后缀名为:ico 3、在创建的项目名称(Setup1)上点击右键:属性 选择系统必备:

然后选择.NET的版本,和Windows Installer3.1(可选项) 选择:“从与我应用程序相同的位置下载系统必备组件” 这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。

VS2010发布.NET2.0的版本,在创建安装程序时,需要设置启动条件:在项目名称(setup1)上,点击右键选择“视图”“启动条件”:

然后VS2010会创建如下文件: 在“启动条件”中, 点击“.NET Framework”在Version上面选择.NET Framework 2.0;

vs2012建立和引用lib、dll简明教程

Vs2012建立引用lib、dll简明教程 一、基本概念 Lib——静态链接库用到的指令都被直接包含在exe文件中,程序运行的时候不再需要其它的库文件。静态共享代码 DLL——把调用的函数所在dll和函数所在位置信息链接至程序中,程序运行的时候再从DLL中寻找相应函数代码,因此需要相应DLL文件的支持。动态引用和卸载 二、vs2012建立和引用lib 建立lib 1.创建静态项选择win32控制台应用程序->输入项目名称->选择静态链接库->取消 默认预编译头->完毕。 2.编写库创建cpp和h文件,并编写内容。 3.编译,创建完成,新lib在输出路径(debug)中。 引用lib 1.创建工程略 2.编写程序略 3.在项目->属性->配置属性->vc++目录->包含目标中附加之前工程的头文件的目录 4.在引用->通用属性->框架和引用->添加引用->勾选相应目录->确定(lib项目和该项目在同一路径下时)。 或者在vc++目录->库目录中添加新lib的路径,在链接器->输入->附加依赖项中添加新lib。 5.完成。在编写程序时要加上头文件包含。 三、vs2012建立和引用dll 建立dll 1. 创建动态项选择win32控制台应用程序->输入项目名称->选择动态链接库->取消默认预编译头->完毕。

2. 编写库创建cpp和h文件,并编写内容。在h文件中对函数的声明时注意,对于该dll输出接口的函数要用__declspec(dllexport)声明,如 extern “C”__declspec(dllexport) int Add(int &a,int &b); 加extern“C”是为了解决因C编译器与C++编译器对函数声明的编译情况不同(c语言不支持重载),而导致的调用错误。如果已知在c++环境下调用,可不必加。 3. 引用dll同时需要lib文件,再在项目中添加一个def文件。 4. 编译生成,新dll和lib在输出路径(debug)中。 此处的lib存放的是dll的函数入口位置,与单纯静态链接库 lib不同。 引用dll 1.创建工程略 2.编写程序略 3.在项目->属性->配置属性->vc++目录->包含目标中附加dll的头文件的目录 4.在引用->通用属性->框架和引用->添加引用->勾选相应目录->确定(dll项目和该项目在同一路径下时) 或者在vc++目录->库目录中添加新lib的路径,在链接器->输入->附加依赖项中添加新lib。 5.完成。在编写程序时要加上头文件包含。

vs2010发布、打包安装程序详解

这是我在网上搜到的,加以自己的理解和对一些不明白的地方做了一些更新说明。 1、在vs2010 选择“新建项目”→“其他项目类型”→“Visual Studio Installer”→ “安装项目”: 命名为:Setup1 ,选择好位置后点确定。这时在VS2010中将有三个文件夹,如图: a.“应用程序文件夹”:表示要安装的应用程序需要添加的文件; b.“用户的‘程序’菜单”:表示应用程序安装完,用户的“开始菜单”中的显示的 内容,一般在这个文件夹中,需要再创建一个文件用来存放:应用程序.exe和卸载程序.exe; c.“用户桌面”表示:这个应用程序安装完,用户的桌面上的创建的.exe快捷方式。 2、应用程序文件夹中点右键,添加文件:表示添加要打包的文件;

添加的文件一般是已经编译过应用程序的debug目录下的文件(主要为.exe文件,其他文件可选); 如果有所需要的动态库也加载进来: 如果还要添加子文件夹则需要“添加文件夹” 然后把对应的子文件里的内容添加到此文件夹中; 把需要创建程序快捷方式的图标也添加进来(在res文件夹下),后缀名为:ico

3、在创建的项目名称(Setup1)上点击右键 属性,选择系统必备:

如果在项目名称(Setup1)的“检测到的依赖项”里检测到所添加的程序文件有.NET 依赖,如图:则选择所需的.NET的版本和Windows Installer3.1(可选项),如果没有则不用选。 选择:“从与我应用程序相同的位置下载系统必备组件”,这样安装包就会打包.NET FrameWork ,在安装时不会从网上下载.NET FrameWork组件;但是安装包会比较大。 在创建安装程序时,需要设置启动条件(如果有.NET依赖):在项目名称(setup1)上,点击右键选择“视图” “启动条件”:

dll(动态链接库)的创建和使用

dll的创建和使用使用C++语言创建dll并使用该dll的演示、说明

Dll的创建和使用 第一部分创建C风格的dll (4) 步骤1:创建dll工程 (4) 步骤2:文件改名 (5) 步骤3:拷贝文件内容 (6) 步骤4:从工程中删掉文件main.cpp,main.h (7) 步骤5:继续修改文件mydll.h和mydll.cpp (7) 步骤6:编译并生成dll文件 (8) 第二部分以间接调用的方式使用.dll (10) 步骤1:新建一个控制台工程(UseDll.cbp). (10) 步骤2:修改main.cpp。 (11) 步骤3:编译,生成UseDll.exe (12) 步骤4:拷贝mydll.dll到UseDll.exe所在目录 (13) 步骤5:执行UseDll.exe,输出: (13) 间接调用Dll的好处 (14) 第三部分以直接调用的方式使用.dll (15) 步骤1:改写main.cpp (15) 步骤2:添加mydll.dll的静态导出库到UseDll工程中 (16) 步骤3:编译并执行,输出 (17) 直接调用的好处 (18) Dll的优势 (18) 调用约定的说明 (18) 第四部分创建C++风格的dll(本地方法) (19) 步骤1:在mydll.h中新增导出的类 (19) 步骤2:在mydll.cpp中实现Cat类 (19) 步骤3:编译MyDll,生成mydll.dll,mydll.a (21) 第五部分使用本地风格的C++ DLL (22) 步骤1:修改UseDll中的main.cpp (22) 步骤2:将mydll.a添加到UseDll工程的BuildOptions中 (23) 步骤3:编译UseDll工程,生成UseDll.exe (23) 步骤4:将MyDll.dll拷贝到UseDll.exe目录下 (23) 步骤5:执行UseDll.exe,输出 (23) 本地风格的不足 (24) 第六部分创建推荐风格的C++ DLL (26) 步骤1:修改mydll.h,创建Cat的接口类ICat (26) 步骤2:新建类Cat (27) 步骤3:实现createCat函数 (29) 步骤4:编译,生成mydll.dll (31) 第七部分使用推荐风格的C++ DLL (32) 步骤1:修改UseDll中的main.cpp (32)

VS2010制作安装包

北京江南天安科技有限公司20XX年XX月XX日

版本控制

目录 1引言 (5) 1.1编写目的 (5) 1.2读者对象 (5) 2操作流程 (5)

附图目录 图2-1 新建项目 (5) 图2-2 选择安装包项目 (6) 图2-3 映入眼帘 (6) 图2-4 添加项目执行文件 (7) 图2-5 选择Primary output (7) 图2-6 创建执行文件的快捷方式 (8) 图2-7 粘贴在桌面文件夹下 (8) 图2-8 添加文件夹 (8) 图2-9 添加msiexe.exe (9) 图2-10 复制ProductCode (9) 图2-11 粘贴Code (10) 图2-12 设置安装包属性 (10) 图2-13 设为Release版 (11)

1引言 1.1编写目的 谨防自己以后忘记。 1.2读者对象 MySelf。 2操作流程 1.选中要制作安装包的项目,点击菜单栏“File”→“New”→“Project”,如下图所 示: 图2-1新建项目 2.选择“Visual Studio Installer”→“Setup Project”项,然后输入相关项,如下图所示: Name:安装包名称 Location:安装包放在什么路径下 Solution:1.新建一个项目;2.添加到该项目下 Solution Name:如果选择添加到本项目下,不需要输入Solution Name项

图2-2选择安装包项目 3.在上一界面点击“OK”按钮后,进入如下界面,在右侧项目下方出现“XXX安装 包”项目,如下图所示: 图2-3映入眼帘 4.单击左侧“Application Folder”项,在此文件夹下添加项目执行文件,在中间空白 页面处单击鼠标右键,点击“Add” “Project output”项,如下图所示:

C++ 动态库创建与调用

1、概述 先来阐述一下DLL(Dynamic Linkable Library)的概念,你可以简单的把DLL看成一种仓库,它提供给你一些可以直接拿来用的变量、函数或类。在仓库的发展史上经历了“无库-静态链接库-动态链接库”的时代。 目前以lib后缀的库有两种,一种为静态链接库(Static Libary,以下简称“静态库”),另一种为动态连接库(DLL,以下简称“动态库”)的导入库(Import Libary,以下简称“导入库”)。 静态链接库与动态链接库都是共享代码的方式,如果采用静态链接库,则无论你愿不愿意,lib中的指令都被直接包含在最终生成的EXE文件中了。但是若使用DLL,该DLL不必被包含在最终 EXE文件中,EXE文件执行时可以“动态”地引用和卸载这个与EXE独立的DLL文件。静态链接库和动态链接库的另外一个区别在于静态链接库中不能再包含其他的动态链接库或者静态库,而在动态链接库中还可以再包含其他的动态或静态链接库。 2、静态库 对静态链接库的讲解不是本文的重点,但是在具体讲解DLL之前,通过一个静态链接库的例子可以快速地帮助我们建立“库”的概念。 在VC++6.0中new一个名称为libTest的static library工程(单击此处下载本工程附件),并新建lib.h和lib.cpp两个文件,lib.h和lib.cpp的源代码如下: //文件:lib.h #ifndef LIB_H #define LIB_H extern "C" int add(int x,int y); //声明为C编译、连接方式的外部函数 #endif //文件:lib.cpp #include "lib.h" int add(int x,int y) { return x + y; } 编译这个工程就得到了一个.lib文件,这个文件就是一个函数库,它提供了add的功能。将头文件和.lib文件提交给用户后,用户就可以直接使用其中的add函数了。 下面来看看怎么使用这个库,在libTest工程所在的工作区内new一个libCall 工程。libCall工程仅包含一个main.cpp文件,它演示了静态链接库的调用方法,其源代码如下: #include #include "../lib.h" #pragma comment( lib, "..//debug//libTest.lib" ) //指定与静态库一起连接

在VS2017中创建和使用动态链接库DLL

在VS2017中创建和使用动态库DLL 一、在VS2017中创建DLL动态库 1、运行VS2017,选择:新建->项目->Visual C++ ->Windows桌面->动态库(DLL),选择保存项目位置, 输入项目名称(也是动态库的名称),确定。 2、给项目添加头文件:15MyDLL.h,

4、在头文件中,写入代码: #ifndef EXPORT_DLL//如果没有在项目配置属性->C/C++ ->预处理器定义了“EXPORT_DLL”#define EXPORT_API __declspec(dllimport) //宏定义__declspec(dllimport)为EXPORT_API,即为导入,从DLL 中导入到应用程序 #else//否则(如果在于处理器定义了EXPORT_DLL) #define EXPORT_API__declspec(dllexport) //EXPORT_API 被定义成导出__declspec(dllexport),从DLL中输出 变量、函数或类等 #endif// !EXPORT_DLL 添加全局变量、函数和类: extern EXPORT_API float const PII = 3.14159; //导出一个常变量,要赋初值,在头文件中,要用extern修饰为 全局变量, EXPORT_API float圆面积(float); //导出一个函数

public: 球体(); ~球体(); private: }; 给类添加变量: 给类添加成员函数:

5、生成DLL动态库: 注意:在*.cpp中,#include "stdafx.h"要在#include "15MyDLL.h"前面哦,不然会有一堆错误出现! #include "stdafx.h"在前,就没有出错。 6、将生成的DLL对应的*.dll、*.lib和*.h复制出来,拷贝到应用程序中项目中,导出相应的变量、函数和类。

相关文档
最新文档