- 浏览: 692273 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (181)
- Matlab (16)
- Java (26)
- autoHotkey (4)
- openCV (1)
- C++ (50)
- PDF-XChange Viewer (2)
- 学术 (11)
- javascript (4)
- linux (11)
- SWT (9)
- latex (7)
- GAE (2)
- windows (6)
- C# (3)
- PS (20)
- JNI (4)
- latex,批处理 (0)
- 批处理 (4)
- Android (5)
- 矩阵论 (1)
- SVM (1)
- 概率图模型 (0)
- Python (12)
- Eigen (5)
- 编程题 (1)
- MKL (1)
- 神经网络 (9)
- 最优化 (2)
- 摄影 (1)
- PPT (0)
- After Effects (3)
- CUDA (3)
- caffe (0)
- MXNet (2)
- svn (1)
- R (0)
- 虚拟机 (0)
- tensorflow (7)
- theano (1)
- Keras (1)
- vim (1)
- xgboost (1)
- spark (6)
- eclipse (2)
- word2vec (0)
- hadoop (1)
- dmlc (1)
- git (0)
最新评论
-
jeffersonz:
请问大神,这个插件记录下来的脚本为什么不能再Extendscr ...
PhotoShop - 记录PS的所有操作为JavaScript代码 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道cherish ...
Eigen的编译选项;MKL的使用 -
cherishLC:
Andy__Zou 写道cherishLC 写道Andy__Z ...
Eigen的编译选项;MKL的使用 -
Andy__Zou:
cherishLC 写道Andy__Zou 写道 您好,您的工 ...
Eigen的编译选项;MKL的使用
此篇仅作简要的记录,作为备忘。
更为详细的可以参考:http://www.cnblogs.com/houkai/archive/2013/06/05/3119513.html
http://blog.csdn.net/ixsea/article/details/6676802
MS关于DLL的文档目录:http://msdn.microsoft.com/zh-cn/library/1ez7dh12.aspx
1、DLL的创建
官方文档:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx
在VS中新建DLL工程,定义
接下来,我们在创建DLL的工程中定义CREATEDLL_API,方法为:在工程属性页面下图所示位置加上CREATEDLL_API:
对于需要导出的函数(声明和定义两处都要),要这么写:
由于定义了CREATEDLL_API,相当于声明了:
表明我们现在是要导出该函数funcA。写好函数后就可以编译了。
编译好之后,会生成 对应的lib文件和DLL文件。
2、DLL的使用
注意:程序运行时需要将DLL拷贝到程序所在目录,或者将DLL目录添加到环境变量Path中(添加完成后需要重启)。
方法1:隐式链接 Linking Implicitly
http://msdn.microsoft.com/zh-cn/library/d14wsce5.aspx
将之前写的头文件加入工程,该工程不要定义CREATEDLL_API。
将生成的lib文件所在路径添加到工程的libarary directory中就可以编译了。
这里想多说一点的是:如果按我上面的头文件写法,编译器会自动选择对应的lib文件。无需在工程属性的linker->Input下手动输入要引入的lib文件了。
当然,前提是需要手动将DLL工程的输出DLL文件名进行更名,64位版本加了X64后缀,32位版本加了X86后缀。如下图所示:
方法2:显式链接 Linking Explicitly
http://msdn.microsoft.com/zh-cn/library/784bt7z7.aspx
参考官方文档或者之前给出的博文吧!
过程主要为:
LoadLibray 载入DLL
GetProcAddress 获取函数地址
使用函数句柄
FreeLibrary 释放DLL资源
3、查看DLL中经过修饰的函数名
http://msdn.microsoft.com/zh-cn/library/756as972.aspx
C++中会对函数名进行修饰,如果用显式链接,直接使用原始函数名会出现问题!
可以通过dumpbin工具进行查看:
方法为,从开始菜单中打开VS的command prompt,在命令行环境下输入以下命令,就可以看到导出的函数名了:
由于我使用隐式调用,这里不再深究
更为详细的可以参考:http://www.cnblogs.com/houkai/archive/2013/06/05/3119513.html
http://blog.csdn.net/ixsea/article/details/6676802
MS关于DLL的文档目录:http://msdn.microsoft.com/zh-cn/library/1ez7dh12.aspx
1、DLL的创建
官方文档:http://msdn.microsoft.com/zh-cn/library/ms235636.aspx
在VS中新建DLL工程,定义
#pragma once #ifdef CREATEDLL_EXPORTS #define CREATEDLL_API __declspec(dllexport) #else #define CREATEDLL_API __declspec(dllimport) // Check windows #if _WIN32 || _WIN64 #if _WIN64 #pragma comment(lib,"LBFGS_alglibDLLX64.lib") #else #pragma comment(lib,"LBFGS_alglibDLLX86.lib") #endif #endif #endif
接下来,我们在创建DLL的工程中定义CREATEDLL_API,方法为:在工程属性页面下图所示位置加上CREATEDLL_API:
对于需要导出的函数(声明和定义两处都要),要这么写:
CREATEDLL_API int funcA(int a=1);
由于定义了CREATEDLL_API,相当于声明了:
__declspec(dllexport) int funcA(int a=1);
表明我们现在是要导出该函数funcA。写好函数后就可以编译了。
编译好之后,会生成 对应的lib文件和DLL文件。
2、DLL的使用
注意:程序运行时需要将DLL拷贝到程序所在目录,或者将DLL目录添加到环境变量Path中(添加完成后需要重启)。
方法1:隐式链接 Linking Implicitly
http://msdn.microsoft.com/zh-cn/library/d14wsce5.aspx
将之前写的头文件加入工程,该工程不要定义CREATEDLL_API。
将生成的lib文件所在路径添加到工程的libarary directory中就可以编译了。
这里想多说一点的是:如果按我上面的头文件写法,编译器会自动选择对应的lib文件。无需在工程属性的linker->Input下手动输入要引入的lib文件了。
当然,前提是需要手动将DLL工程的输出DLL文件名进行更名,64位版本加了X64后缀,32位版本加了X86后缀。如下图所示:
方法2:显式链接 Linking Explicitly
http://msdn.microsoft.com/zh-cn/library/784bt7z7.aspx
参考官方文档或者之前给出的博文吧!
过程主要为:
LoadLibray 载入DLL
GetProcAddress 获取函数地址
使用函数句柄
FreeLibrary 释放DLL资源
3、查看DLL中经过修饰的函数名
http://msdn.microsoft.com/zh-cn/library/756as972.aspx
C++中会对函数名进行修饰,如果用显式链接,直接使用原始函数名会出现问题!
可以通过dumpbin工具进行查看:
方法为,从开始菜单中打开VS的command prompt,在命令行环境下输入以下命令,就可以看到导出的函数名了:
dumpbin /exports ./x64/Release/LBFGS_alglibDLLX64.dll
由于我使用隐式调用,这里不再深究
发表评论
-
C++函数中的静态变量
2019-07-19 11:22 820在C++中,可以在成员函数中使用静态变量,从而间接达到在hpp ... -
tensorflow 静态编译笔记 -- linux系统
2018-11-05 14:26 0注: 1、编译tensorflow静态库 很简单,参见: h ... -
gperftools笔记
2018-06-27 14:30 0export LD_LIBRARY_PATH=LD_LIBR ... -
dmlc分布式线性模型编译笔记
2018-06-06 10:37 21771、使用第三方修改后的wormhole工程 原始工程wor ... -
C++中读取控制台输出,并将文件指针FILE*转换为istream
2017-11-27 15:03 1840解决的问题: 1、通过执行系统的bash命令后,获取其输出( ... -
c++中使用boost库在共享内存中存储map
2017-11-09 11:37 5429boost库中的interprocess包可以在共享内存中创建 ... -
近似最近邻算法库FLANN
2017-04-25 18:45 0FLANN库是计算近似最近邻的库, 问题定义如下: 给定距离函 ... -
C++杂记-- 重定向std::cout等
2017-04-18 17:28 19691、屏蔽std::cout 参见:http://stackov ... -
CMake指定目标代码的平台(win32,x64)
2016-06-03 20:54 11728主要参考自:http://blog.c ... -
windows 10下安装GPU版MXNet
2016-06-03 21:28 8590上回说到编译CPU版的MXNet: http://cheris ... -
windows下安装CPU版mxnet
2016-05-23 23:14 17594MXnet (mix net)类似Caffe,Tensorfl ... -
批处理(bat)设置IP地址
2016-02-11 23:14 1709买了个TOTOLINK EX300v2中继器,想修改配置还得修 ... -
Linux C++编译及 静态/动态 链接库 笔记
2015-12-20 19:49 60561、C++文件的编译 g++参 ... -
Linux (Ubuntu) 下 Eclipse C++ 环境配置
2015-12-08 21:49 19591、安装JDK 参见http://blog.csdn.net/ ... -
Photoshop插件开发-filter
2015-10-11 22:53 3374初学,,感觉PS插件的文档很烂,,教程也很少,,也就这么简单学 ... -
使Visual Assist X支持CUDA的.cu文件的代码提示
2015-07-17 00:05 2304现在安装CUDA很方便了,直接支持Visual Studio。 ... -
CUDA程序block和thread超出硬件允许值时的异常
2015-07-13 11:32 3752调用CUDA的核函数时指定block 和 thread大小,该 ... -
windows系统配置
2015-06-06 16:30 626删除Hiberfil.sys :使用命令powercfg -h ... -
matlab的mexFunction中使用std::cout(部分转载)
2014-09-27 15:37 2162在matlab、C++混合编程的时候,可能会用到之前的代码。代 ... -
Eigen库:那些年我们一起经历的bug
2014-09-24 18:39 18611、使用auto声明新变量 ...
相关推荐
创建DLL: 1. **创建新项目**:在VS2012中,选择“文件”>“新建”>“项目”,然后在模板列表中选择“Win32控制台应用程序”。在向导中,选择“动态链接库(DLL)”作为项目类型。 2. **定义接口**:DLL中的函数通常...
首先,我们创建DLL项目。打开VC6,选择"File" -> "New",然后在"Project"对话框中,选择"Win32 Project"。在"Application Settings"中,确保"Dynamic-link library (DLL)"被选中,然后点击"Finish"。这样就创建了一...
在易语言中,创建进程注入DLL是一项常见的技术操作,它主要用于实现程序间的数据共享、功能扩展或者隐蔽执行某些任务。这里我们将深入探讨这个主题。 首先,让我们了解什么是“创建进程”和“DLL注入”。创建进程是...
创建DLL主要有两种方法:非MFC(Microsoft Foundation Classes)DLL和使用.def文件。 1. **非MFC DLL创建步骤**: - 打开Visual Studio,选择`File` -> `New` -> `Project`,然后选择`Win32 Dynamic-Link Library`...
本文将深入探讨如何创建和使用MFC DLL。 首先,我们来理解DLL(Dynamic Link Library)的基本概念。DLL是一种可执行文件,其中包含可由多个程序共享的函数和资源。通过使用DLL,开发者可以减少内存占用,提高系统...
本篇文章将深入探讨如何在C#中创建DLL以及如何在其他应用程序中调用这些DLL。 首先,我们来了解如何创建一个C# DLL。创建DLL的过程主要包括以下几个步骤: 1. **创建新项目**:在Visual Studio中,选择"文件" -> ...
本篇将详细介绍如何使用DLL创建快捷方式。 DLL(Dynamic Link Library)是Windows系统中的一种共享代码库机制,它允许多个程序同时使用同一段代码,从而节省内存并提高程序运行效率。在创建快捷方式的场景下,我们...
一 链接库概述 二 静态链接库 三 库的调试与查看 四 一个简单的DLL 非MFC动态库 五 MFC规则DLL Regular 六 MFC扩展DLL的创建 七 让EXE导出函数及DLL木马
易语言创建进程注入DLL文件。@qq1347522182。
### 创建和使用C# DLL(动态链接库)深入解析 #### 概述 在软件开发领域,动态链接库(Dynamic Link Library,简称DLL)是一种在Windows操作系统中广泛使用的共享库形式,它允许多个应用程序共享相同的代码和数据...
VS 创建 DLL 工程及使用方法 在 VS 中创建 DLL 工程是一个常见的开发需求,以下是一个基本的示例,展示如何创建一个 Win32 DLL 动态链接库,并使用该库。 DLL 工程创建 首先,需要在 VS 中创建一个新的 Win32 DLL...
本篇文章将深入探讨如何在Delphi环境中创建DLL,并在其他程序中调用其函数。 首先,我们需要了解DLL的基本概念。DLL是一种可执行文件格式,它包含可由多个程序同时使用的代码和数据。Windows操作系统广泛支持DLL,...
创建DLL的步骤通常包括以下几个关键环节: 1. **设计接口**:首先,你需要定义DLL的接口,这包括确定对外公开的函数或类。这些函数将作为其他程序调用DLL的入口点。在PB11.5中,你可以通过创建一个新的函数或类并将...
对于`.docx`文档,可能是详细说明创建和使用纯资源DLL的步骤,以及可能遇到的问题和解决方法。`res.rar`文件可能包含示例资源文件,如图标或对话框定义,供开发者参考和使用。 总的来说,纯资源DLL在Windows程序...
创建DLL有几种不同的类型,包括Non-MFC DLL、Regular DLL和Extension DLL: 1. **Non-MFC DLL**:不使用MFC(Microsoft Foundation Classes)库,使用标准C语言或C++编写的DLL,导出的函数接口为标准C接口,可以被...
Delphi创建Dll和调用Dll示例(包含Dll窗体调用) 网上介绍比较杂乱,特地整理了一份Demo代大家学习参考。 1.socketA_dll 为dll工程目录。 2.LoadDllDemo 为【静态调用】dll工程目录。 3.LoadDllDemo_动态调用 为...
创建Dll a。首先新建一个 MFC AppWiZard(dll)文件。 b。在头文件中添加预定义。 如:#define NAN_IMAGE_DLL_EXPORT extern "C" __declspec(dllimport) c.在头文件中定义函数名称 函数名称:NAN_DrawLine 参数:...
创建DLL的第一步是建立一个新的控制台应用项目,并将其配置为DLL类型。在Visual Studio中,选择"新建项目",然后在模板列表中选择"C++ Win32 Console Application",在后续的向导中选择"动态链接库(DLL)"并确认设置...
总结起来,VS2008创建DLL涉及项目配置、函数导出、头文件声明、编译及使用等多个环节。通过实践和理解这个例子,开发者不仅可以学会如何创建DLL,还能更好地理解DLL的工作原理和在实际项目中的应用。
在这个“mfc创建DLL”的主题中,我们将深入探讨如何使用MFC构建这两种类型的DLL,以及如何在其他项目中使用这些DLL。 首先,让我们了解创建常规MFC DLL的步骤。常规MFC DLL 是一个与MFC静态链接的库,这意味着它...