首先把需要调用的动态库dll和它依赖的对象都要放入到运行目录,debug环境就是debug目录下了。
然后就写代码:
#include <iostream>
#include <windows.h>
#include<string.h>
//extern int OutPutQrCode(int version, int width, const char* outfile, unsigned char* data)
typedef int(_cdecl *OutPutQrCode)(int, int,const char*, unsigned char*); typedef struct {
int version; ///< version of the symbol
int width; ///< width of the symbol
unsigned char* data; ///< symbol data
} QRcode; int main()
{
std::cout << "Hello World!\n";
HMODULE hMod = LoadLibrary("LLQrencode.dll");
if (hMod != NULL)
{
/*
如果加载成功,则可通过GetProcAddress函数获取DLL中需要调用的函数的地址。
获取成功,sum指针不为空。
*/
OutPutQrCode getCodeImg = (OutPutQrCode)GetProcAddress(hMod, "OutPutQrCode"); GetProcAddress(hMod, "OutPutQrCode"); if (getCodeImg != NULL)
{
getCodeImg(3, 130, "e:\\a.png", (unsigned char*)"www.baidu.com");
}
FreeLibrary(hMod);
/*在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL。*/
} }
构建一个方法指针:typedef int(_cdecl *OutPutQrCode)(int, int,const char*, unsigned char*);
要和需要使用的接口参数相同。
使用LoadLibrary加载库
寻找库里的接口并转换
OutPutQrCode getCodeImg = (OutPutQrCode)GetProcAddress(hMod, "OutPutQrCode");
调用:
getCodeImg(3, 130, "e:\\a.png", (unsigned char*)"www.baidu.com");
释放:
FreeLibrary(hMod);

c++调用动态dll库的更多相关文章

  1. Python 调用 C# dll库最简方法

    1.为什么要跨平台编程?双平台编程或多平台编程,只是为提供更好开发更兼容的解决方案的一种手段,编程时服务于产品和客户的,也是因地制宜. 先安装python所需的库clr ,我这里已经安装了,可以去对应 ...

  2. java调用C++ DLL库方法

    最近一个项目要开发网页端人脸识别项目,人脸识别的算法已经写好,是C++版,但是网页端要求使用Java后台,这就涉及到Java调用DLL的问题.经过查找,实现了一个简单的例子. 1.第一步,先在Java ...

  3. # C# 如何调用动态连接库?

    导入命名空间 using System.Runtime.InteropServices; 把 非托管DLL放入执行程序同级目录,比如 Debug .Release . [DllImport(" ...

  4. C#中调用user32.dll库的keybd_Event函数,操作键盘

    keybd_event()的函数原型是: void keybd_event( byte bVk,          //虚拟键码 byte bScan,       //该键的硬件扫描码 dword ...

  5. golang调用c++的dll库文件

    最近使用golang调用c++的dll库文件,简单了解了一下,特作此笔记:一.DLL 的编制与具体的编程语言及编译器无关 dll分com的dll和动态dll,Com组件dll:不管是何种语言写的都可以 ...

  6. C#之改变窗体icon图标、新建类文件、调用dll库

    一.改变窗体的图标 没有修改之前为: 修改之后为自己想要的图标: 需要在窗体Form1.cs属性里边添加icon图片文件: 二.新建cs类文件 如下图所示,新建一个类文件,我用于来调用库文件也可以来定 ...

  7. 简单实现python调用c#dll动态链接库

    在python调用c#dll库时要先安装库clr,即安装pythonnet,参考文章:https://www.cnblogs.com/kevin-Y/p/10235125.html(为在python中 ...

  8. c++调用matlab生成的Dll动态连接库

    点击打开链接http://download.csdn.net/detail/nuptboyzhb/4228429 c++调用matlab生成的Dll动态连接库 实验平台:   matlab 7.0(R ...

  9. VS2013 生成sqlite3动态连接库及sqlite3.dll的调用

    一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...

  10. Qt生成和调用动态库dll,和静态库.a(windows和linux通用)

    系统1:ThinkPad T570.Windows10.QT5.12.2(Qt Creater 4.8.2)一.动态库.dll的创建和调用1.在qtcreater中按如下步骤创建动态库,动态库名为my ...

随机推荐

  1. HDD杭州站•ArkUI让开发更灵活

    原文:https://mp.weixin.qq.com/s/cX48CPs61daKOC2J5znyJw,点击链接查看更多技术内容. 7月15日的HUAWEI Developer Day(简称HDD) ...

  2. Matplotlib Installing an official release from resources 源码安装Matplotlib官方版本

    Installation Installing an official release Matplotlib releases are available as wheel packages for ...

  3. spring boot yaml 配置[三]

    前言 我们知道java 因为历史的原因,一直有一个配置地狱的痛点.那么如何解决掉它呢? spring boot 是一柄利器,但是呢,还是要配置. 看来配置的避免不了的了. 那么如何可以减轻这种痛苦呢? ...

  4. Pytorch-卷积神经网络CNN之ResNet的Pytorch代码实现

    先说一个小知识,助于理解代码中各个层之间维度是怎么变换的. 卷积函数:一般只用来改变输入数据的维度,例如3维到16维. Conv2d() Conv2d(in_channels:int,out_chan ...

  5. leetcode:94. 二叉树的中序遍历

    94. 二叉树的中序遍历 给定一个二叉树,返回它的中序 遍历. 示例: 输入: [1,null,2,3] 1 \ 2 / 3 输出: [1,3,2] 进阶: 递归算法很简单,你可以通过迭代算法完成吗? ...

  6. 力扣118(java)-杨辉三角(简单)

    题目: 给定一个非负整数 numRows,生成「杨辉三角」的前 numRows 行. 在「杨辉三角」中,每个数是它左上方和右上方的数的和. 示例 1: 输入: numRows = 5输出: [[1], ...

  7. 开源小白到核心开发——我与 sealer 的成长故事

    简介: 下面将以作者本人与 sealer 的一段成长故事来带领大家体验从小白到核心功能开发者的开源之旅,同时本文也作为一篇引领开源小白入门的文章供大家参考. 作者:周欣元 个人简介   大家好,我是周 ...

  8. 基于WASM的无侵入式全链路A/B Test实践

    简介: 我们都知道,服务网格(ServiceMesh)可以为运行其上的微服务提供无侵入式的流量治理能力.通过配置VirtualService和DestinationRule,即可实现流量管理.超时重试 ...

  9. 那些你不知道的TCP冷门知识!

    简介: 最近在做数据库相关的事情,碰到了很多TCP相关的问题,新的场景新的挑战,有很多之前并没有掌握透彻的点,大大开了一把眼界,选了几个案例分享一下. 最近在做数据库相关的事情,碰到了很多TCP相关的 ...

  10. 殷浩详解DDD:如何避免写流水账代码?

    简介: 在日常工作中我观察到,面对老系统重构和迁移场景,有大量代码属于流水账代码,通常能看到开发在对外的API接口里直接写业务逻辑代码,或者在一个服务里大量的堆接口,导致业务逻辑实际无法收敛,接口复用 ...