C++ 载入dll
1.新建一个项目生成dll
首先我们新建一个项目生成一个Dynamic Library(动态链接库) dll
里面非常简单,只有一个add方法。等下我们就要在其他项目里尝试载入这个dll,调用里面的这个add方法。
// MyDLL.cpp : Defines the entry point for the DLL application.
// #include "stdafx.h" extern "C"
{
_declspec(dllexport) int add(int x, int y);
} int add(int x, int y){
return x + y;
}
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
如果开始项目不是没有生成dll,记得打开项目的属性,选择Dynamic Library。
2.新建一个项目载入dll
// DLLTest.cpp : Defines the entry point for the console application.
// #include "stdafx.h"
#include <windows.h> //must include this typedef int (*MyAdd)(int x, int y);
int main(int argc, char* argv[])
{
HMODULE hmod = NULL; hmod = ::LoadLibrary("MyDLL.dll"); //load dll
if(hmod == NULL){
printf("load MyDLL.dll failed!");
return 0;
} MyAdd Add = (MyAdd)GetProcAddress(hmod, "add");
if(!Add){
printf("get function failed!");
return 0;
} printf("test add(): 1+2=%d\n", Add(1,2));
::FreeLibrary(hmod); // release resource getchar();
return 0;
}
效果图:
成功调用!
项目下载地址:c++动态载入dll
文章源地址:http://www.waitingfy.com/?p=654
C++ 载入dll的更多相关文章
- C#  动态载入Dll
		
1.新建測试dll及方法,用vs2010新建winform程序,详细代码例如以下: using System; using System.Collections.Generic; using Syst ...
 - 延迟载入Dll(动态载入Dll)
		
windows核心编程(第五版)20.3节的延迟载入Dll 延迟载入Dll技术出现的原因: 因为DLL的加载是比较浪费时间的,特别是大型软件加载,因此,这项技术是在应对软件初始化过程中避免浪费太多的时 ...
 - 动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
		
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
 - VS2012载入DLL编译出现试图载入格式不对的程序; 以及执行出现Mixed mode assembly is built against version 'v2.0.50727' of the
		
VS2012载入DLL编译出现试图载入格式不对的程序:以及执行出现Mixed mode assembly is built against version 'v2.0.50727' of therun ...
 - 【转载】动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
		
原文地址:https://www.cnblogs.com/westsoft/p/5936092.html 动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行 ...
 - win系统动态载入DLL所需要的三个函数详解(LoadLibrary,GetProcAddress,FreeLibrary)
		
动态载入 DLL 动态载入方式是指在编译之前并不知道将会调用哪些 DLL 函数, 完全是在运行过程中根据需要决定应调用哪些函数. 方法是:用 LoadLibrary 函数加载动态链接库到内存,用 Ge ...
 - 载入DLL中的图片资源生成Skia中的SkBitmap对象
		
PPAPI Plugin在Windows下是DLL,能够嵌入图片文件.使用Skia画图时须要依据DLL里的图片文件生成SkBitmap对象. 以下是代码: #include "utils.h ...
 - Windows 程序启动性能优化(先载入EXE,后载入DLL,只取有限的代码载入内存,将CPU的IP指向程序的入口点)
		
一.重定位链接时重定位:目标文件一般由多个节组成,编译器在编译每个目标文件时一般都是从0地址开始生成代码.当多个代码节合成一个代码段时,需要根据其在最终代码段中的位置做出调整.同时,链接器需要对已经解 ...
 - Java调用第三方dll文件的使用方法 System.load()或System.loadLibrary()
		
Java调用第三方dll文件的使用方法 public class OtherAdapter { static { //System.loadLibrary("Connector") ...
 
随机推荐
- 将EC2里的实例导出到RAW文件并进行修改
			
你可能有自己的instance在amazon云环境里面,或者是你想深度修改一下marketplace里面提供的那些系统又估计运行中的instance改动不方便 亚马逊作为云计算领域的大哥大,我不得不说 ...
 - Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)
			
一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1.比较相邻的元素.如果第一个比第二个大,就交换他们两个. 2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应 ...
 - 知识点1-4:ASP.NET MVC的好处
			
ASP.NET MVC解决了ASP.NET Web Form的许多缺点.当在.NET平台上开发新的应用程序时,这使ASP.NET MVC成为一种更好的选择. 1. 对HTML的完全控制 2. 对URL ...
 - SignalR系列教程:服务器广播与主动数据推送
			
本篇是本系列入门篇的最后一遍,由于工作关系,接触SignalR的时间不是很多.等下次有空的话我会写一个利用“SignalR”开发一个在线聊天室的系列博文.近期的话我更偏向于更新框架设计相关的文章,到时 ...
 - QLineEdit 仿QQ签名框
			
今天鼓捣了半天,终于实现了自定义Qt中的QlineEdit控件的大致效果. 这个问题对于新手而言,主要有以下几个难点: 1.继承QLineEdit控件 2.QSS设置QLineEdit的相关样式,可以 ...
 - 配置Jenkins的slave节点的详细步骤适合windows等其他平台(转)
			
@ 新建一个slave节点在Jenkins服务器上 1,进入Jenkins的主界面,进入“Manage Jenkins” 页面: 2,点击如下图中的“Manage Nodes”: 3,进入页面后点 ...
 - MySQL如何查询LINESTRING数据
			
我有一个提交的命名crm_geo_org,具有以下结构 ipoid INTEGER 11 NOT NULL PRIMARY KEY beginip INTEGER 14 NOT NULL UNSIGN ...
 - Mac下显示隐藏文件 以及修改 hosts文件内容
			
修改hosts 文件内容: 进入etc 文件夹,找到hosts 文件,把该文件复制出来,修改完里面的内容后,先把etc中的hosts 文件删除,然后在把修改后的文件脱机去 可能需要管理员的密码,你输入 ...
 - C++中vector的实现
			
 注意几点: 分配内存不要使用new和delete,由于new的同一时候就把对象构造了.而我们须要的是原始内存. 所以应该使用标准库提供的allocator类来实现内存的控制.当然也能够重载ope ...
 - C#.Net操作XML方法二
			
上面那篇博客,在上面那面博客中是通过System.Xml命名空间中的类来实现对XML文件的创建.删除和改动等操作.接下来再介绍一种方法,在整个的操作过程中,仅仅只是换了个类而已,没什么大惊小怪的. D ...