VS2013建立C++ dll库文件

DLL是一个包含可由多个程序同时使用的代码和数据的库,DLL不是可执行文件。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。函数的可执行代码位于一个 DLL 中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。本文介绍了使用VS2013和C++进行动态库的编写,一方面C++运行速度之快大家有目共睹,另一方面,好多技术都是基于C++,如OPENCV ,若是用C++混合编写比其它语言较为容易,使用C++建立动态库公其他语言使用是相当划算的。

操作方法

  • 01

    建立一个C++的Win32DLL,这里要注意选择"Export symbols"导出符号。点击完成。 如下图所示:

  • 02

    由于项目的名称是"TestCPPDLL",因此,会自动生成TestCPPDLL.h和TestCPPDLL.cpp两个文件,.h文件是要导出内容的声明文件,为了能清楚的说明问题,我们将TestCPPDLL.h和TestCPPDLL.cpp两个文件中的所有内容都删除,然后在TestCPPDLL.h中添加如下内容:

  • 03

    第一行代码中定义了一个名为"TESTCPPDLL_API"的宏,该宏对应的内容是"__declspec(dllexport)"意思是将后面修饰的内容定义为DLL中要导出的内容。当然你也可以不使用这个宏,可以直接将"__declspec(dllexport)"写在要导出的函数前面。 第二行中的"EXTERN_C",是在"winnt.h"中定义的宏,在函数前面添加"EXTERN_C"等同于在函数前面添加extern "C",意思是该函数在编译和连接时使用C语言的方式,以保证函数名字不变。 第二行的代码是一个函数的声明,说明该函数可以被模块外部调用,其定义实现在TestCPPDLL.cpp中,TestCPPDLL.cpp的代码如下所示:

  • 04

    第三步: 在编译C++DLL之前,需要做以下配置,在项目属性对话框中选择"C/C++"|"Advanced",将Compile AS 选项的值改为"C++"。然后确定,并编译。

  • 05

    生成的DLL文件如下图所示:

  • 06

    第四步: 首先,添加一个C#的应用程序,如果要在C#中调用C++的DLL文件,先要在C#的类中添加一个静态方法,并且使用DllImportAttribute对该方法进行修饰,代码如下所示:

  • 07

    DllImport中的第一个参数是指明DLL文件的位置,第二个参数"EntryPoint"用来指明对应的C/C++中的函数名称是什么。"extern"关键字表明该处声明的这个Add方法是一个外部调用。 该方法声明完毕之后,就可以像调用一个普通的静态方法一样去使用了。 下面是示例程序:

  • 08

    然后运行该C#程序,其结果如下图所示:

(0)

相关推荐

  • 运行时出错:无法找到指定DLL库文件"SkinH_EL.dll...

    运行时出错! 错误信息:无法找到指定DLL库文件“SkinH_EL.dll”中的输出命令“SkinH_Attach_Ex” 这是用易语言编写的程序,缺少了运行库

  • 如何建立自己的库文件(电脑里的库怎么删除)

    大家好,我是波仔,前天我们介绍分享了文件"库"的使用与管理,今天我们来分享一下文件"库"的建立与删除.Windows 10系统中自带的文件夹里面开始只有默认的几 ...

  • win7系统Protel不能添加库文件怎么办

    win7系统Protel不能添加库文件怎么办

  • protel99中为什么不能添加库文件?

    这是因为你用的是Wind7系统,Protel99在Wind7下是会有这样的问题.但也有解决方法,慢慢弄,绝对可行,方法如下: 方法一: 首先介绍下Protel99库文件添加这个小软件.比较实用,图标如 ...

  • api-ms-win-crt-runtime-l1-1-0.dll类文件缺失

    在电脑使用过程中,有的朋友可能会遇到api-ms-win-**.dll缺失的问题,导致一些软件或游戏无法正常运行.这一问题的解决方法网上有些介绍,但具体原因分析似乎没有.对此,本人通过多次系统安装.比 ...

  • 所选驱动器已存在一个steam库文件夹怎么办

    steam在添加游戏的时候会遇到很多问题,其中之一就是提示错误"所选驱动器已存在一个steam库文件夹",那么此时该怎么办呢?请看解决方法: 前言 01 首先,会遇到这种问题的人, ...

  • 点击Windows7库文件图标打开界面与XP一样

    熟悉Windows 7的用户应该都知道,点击屏幕左下角的库文件图标后,系统默认打开的界面图标和Windows XP不同:不是熟悉硬盘分区的图标,而是Windows 7的库。Windows XP的老用户 ...

  • 文件管理 Win7库文件应用技巧介绍

    使用过Win7系统的朋友,当打开“计算机”或者是资源管理器时,会发现左侧的工具栏相比此前的XP系统确实变化很大,我们会发现有一个“库”的名称,包含了“视频”、“图片”、“文档”、“音乐”等。但是这几个 ...

  • linux软件开发时给gcc指定头文件和库文件路径的方法

    在Linux 下开发软件时,完全不使用第三方函数库的情况是比较少见的,通常来讲都需要借助一个或多个函数库的支持才能够完成相应的功能。从程序员的角度看,函数库实 际上就是一些头文件(.h)和库文件(.s ...