在devc++上封装dll动态链接库

Dev-C++ 连接 MySQL 常见3大编译错误:libmysql.dll缺失与路径配置详解 本文详细解析了Dev-C++连接MySQL时常见的三大编译错误:'undefined reference'、libmysql.dll缺失和头文件路径错误。通过深入分析错误根源,提供分步解决方案和实战配置指南,帮助开发者快速解决数据库连接问题,提升开发效率。 阅读详情

今天在devc++封装dll库,按着教程折腾了好久,一直调用失败,最后发现,在导出函数前,除了要加__declspec(dllexport),还要加 extern "C"

完整方法如下:

  1. 在你使用的编译器上创建dll项目

  2. 添加测试函数
    (1) dll文件

     #ifndef _DLL_H_
     #define _DLL_H_
     
     #if BUILDING_DLL
     #define DLLIMPORT __declspec(dllexport)
     #else
     #define DLLIMPORT __declspec(dllimport)
     #endif
     
     extern "C" __declspec(dllexport) int HelloWorld(int);
     
     #endif
    

    (2)dllmain.cpp文件

     #include "dll.h"
     #include <windows.h>
     #include <iostream>
     
     
     extern "C" __declspec(dllexport) int HelloWorld(int a)
     {
     	std::cout<<"Hello World from DLL!"<<std::endl;
     	return 29;
     }
     
     BOOL WINAPI DllMain(HINSTANCE hinstDLL,DWORD fdwReason,LPVOID lpvReserved)
     {
     	switch(fdwReason)
     	{
     		case DLL_PROCESS_ATTACH:
     		{
     			break;
     		}
     		case DLL_PROCESS_DETACH:
     		{
     			break;
     		}
     		case DLL_THREAD_ATTACH:
     		{
     			break;
     		}
     		case DLL_THREAD_DETACH:
     		{
     			break;
     		}
     	}
     	
     	/* Return TRUE on success, FALSE on failure */
     	return TRUE;
     }
    
  3. 在dll目录下新建一个新的文件调用dll

     #include<bits/stdc++.h>
     #include<Windows.h>
     using namespace std;
     int main()
     {
     	typedef int (*FUNC)();
     	HINSTANCE Hint = LoadLibrary("cec2013.dll");
     	if(Hint==NULL){
     		cout<<"1";
     	} 
     	FUNC f=(FUNC)GetProcAddress(Hint,"HelloWorld");
     	if(f==NULL){
     		cout<<"2";
     	}
     	
     	cout<<f(); 
     }
    
  4. 测试结果:
    在这里插入图片描述

VC++6.0与MFC构建基础计算器实战指南 MFC(Microsoft Foundation Classes)是微软公司提供的一套C++类库,旨在简化Windows应用程序的开发。它包含了一系列封装了Windows API的类,并提供了一套面向对象的编程接口,大大减少了编写底层代码的工作量。字符串资源可以被项目中的任何模块所引用,例如,你可以在对话框中显示文本,或者在菜单项中显示提示信息。打开资源视图中的字符串表资源编辑器。 阅读详情

相关推荐

一种基于OpenPose和DNN的跌倒检测软件系统(中文&英文)

学习并实现一种跌倒检测模型,此模型基于OpenPose实现逐帧人体姿态检测,使用DNN识别人体动作。检测方式有在线与离线两种,本文主要测试了离线模式,测试效果较好。

Tongzhou_Li的博客 2643

【C++】C++封装成DLL并调用(初学者快速入门)

话不多说,干货走起!!!!!!!****(侵删) 使用vs2019将C++封装成DLL并调用主要有以下几个步骤: 1)新建工程,编写要封装的.cpp和.h文件; 2) 生成动态链接库.dll和静态链接库.lib; 3) 调用通过.h文件调用; 第一步:编写.cpp和.h文件 本例工程名称为RunLIB .cpp如下: #include "pch.h" #include<iostream> class FHello :public IInterface { public: FHello();

测试开发自动化 4万+

基于 Python Flask 的智能个人财务系统

4.财务分析与报告:自动生成财务分析报告,提供图表展示(如饼图、柱状图)帮助用户了解收支状况和财务趋势。9.管理员管理功能:提供管理员模块,允许管理员查看用户财务数据、生成统计报告,并进行用户管理与权限控制。5.资产管理:用户可以记录并追踪个人资产(如房产、车辆、投资等),系统提供资产价值增减情况和趋势分析。3.预算制定与管理:用户根据收入设定每月预算,系统自动对比实际支出与预算差异,实时提醒预算完成情况。6.信用卡管理:提供信用卡账单记录与管理功能,提醒用户信用卡还款日期,避免逾期,帮助管理信用卡消费。

weixin_68689665的博客 424

Dev c++工具将C代码生成dll文件以及如何调用dll文件

该篇文章是对工作中一个需求的总结,工作需求是要将C语言的函数接口,生成一个DLL文件,让labview调用。然后我尝试用devc++开发工具来实现这个功能,后来因为DLL生成了,但labview调用的结果和C执行的结果不一致,因此我需要再调用下自己生成的DLL是否正确来定位出错的环节,因此就有了生成DLL以及调用DLL文件。首先说下DLL文件,DLL(Dynamic Link Lib

Forward no stop 2万+

保姆级QFIL线刷教程:从驱动安装到成功刷机的完整避坑指南(Win10/11实测)

本文提供了一份详细的QFIL线刷教程,涵盖从驱动安装到成功刷机的完整流程,特别针对Win10/11系统进行了实测。文章重点解决了EDL模式下的常见问题,如Download Fail和COM Port识别错误,并提供了实用的避坑技巧和故障排除方案,帮助用户实现零失误操作。

weixin_29245767的博客 763

LVDS高速ADC接口, xilinx fpga实现

FPGA实现lvds高速ADC数据接口,窗口对齐算法,Verilog源码

kuangxin的博客 6万+

将C++项目打包为.lib和.dll

将C++项目打包为.lib和.dll

dcjklkmm的博客 1401

【scratch音乐课】天空之城:音符与节拍、消息与链表

scratch是一个非常小巧的青少年编程工具,自带程序编写语句,积木式语句非常直观、易用,可创作数学、科学、音乐、绘画等方面作品。本文用scratch“演奏”一首大家非常熟悉的《天空之城》,并向大家介绍一些基本乐理知识,以及scratch中消息、链表的使用。

★·°立芯;︶︵︶ 1万+

Dev打包问题

把DEV打包成一个BPL,供程序调用(虽然大了点,有38M,可以用ASPACK压缩到之前的一半)。 下面是制作步骤: 1、先建一个BPL,不包含任何DEV单元。 2、按业务需要做窗体、写代码,当然是用包的形式编译,会提示一堆dev的包的引用(这是关键),按提示的顺序将用到的单元加到Dev包中。 3、然后编译Dev包,再编译业务包。这时业务包会小很多,因为用到的单元都编译进dev包了。 

ghs79的专栏 1137

GMSL2摄像头接入避坑指南:从FMC子卡配置到V4L2调用的完整流程(附Ubuntu20.04实测)

本文详细解析了GMSL2摄像头接入的全流程,从FMC子卡配置到V4L2调用的完整指南。基于XC7Z100平台实测经验,提供了硬件选型、带宽优化、Linux驱动配置及高分辨率采集的实战技巧,帮助开发者规避常见问题,提升系统稳定性与性能。

weixin_33737774的博客 417

基于Simulink的鲸鱼优化算法(WOA)MPPT仿真

摘要:本文介绍了基于Simulink的鲸鱼优化算法(WOA)在光伏MPPT控制中的应用。WOA模拟座头鲸的"气泡网捕食策略",通过包围猎物、螺旋收缩和随机搜索三阶段动态平衡全局探索与局部开发能力,有效解决局部阴影导致的多峰P-V曲线问题。文章详细讲解了WOA-MPPT的Simulink建模过程,包括多峰光伏阵列建模、WOA控制器实现和Boost变换器控制。仿真结果显示,在三种典型工况下,WOA-MPPT的追踪效率>99.3%,动态响应时间<0.15s,性能优于传统算法。最后提出了混合WO

amy_mhd的博客 71

使用DEVc++创建dll动态链接库

创建dll

Wangxynb666的博客 1912

搞定ESD(五):静电放电问题分析与调试

前面深入分析了静电放电的干扰机理、耦合路径,从现在开始将进入下一个大家非常关注的环节:静电放电问题分析与调试,掌握静电放电问题的分析方法,快速锁定敏感设备或者耦合路径,可以达到事半功倍的效果。

记得诚 2793

2020-10-27

visual stdio 2017 添加静态库编译报chkstk_ms找不到问题 1.怀疑该问题和编译相关,缺少某些库或者配置不对 2.对于以上问题可以通过dev c++封装该库为动态.dll库,然后再在vs 2017 添加调用即可

m0_37556555的博客 189

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

DevC++ 多线程创建与删除与exe文件脱离DevC++运行中发现dll文件和exe文件的关系

DevC++ 多线程创建与删除与exe文件脱离DevC++运行中发现dll文件和exe文件的关系

a1309602336的博客 1743

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

C语言学习-DevC++的新建项目

编译器根据程序中添加的pragma指令,自动将程序并行处理,以此降低并行编程的难度和复杂度当编译器不支持OpenMP时,程序会退化成普通串行程序。OpenGL(英文全写Open Graphics Library,译名:开放图形库或者“开放式图形库”)是用于渲染2D、3D矢量图形的跨语言、跨平台的应用程序编程接口(API)。Empty Project是空项目,空项目里面是完全空的,所有头文件,库文件,源文件等等都要自己写。先说明下Win32的程序不能装在Win64中,Win64可以装Win32的程序。

weixin_42299708的博客 1811

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

Python调用C函数并封装成类

首先环境搭建: Windows10+python3.6.4+MinGW 这里MinGW我使用的是devc++中的MinGW; MinGW使用的好处: 习惯在linux中写c程序后对于使用Windows的VS这个IDE怎么用怎么觉得傻逼。使用strcpy这个函数会给我报不安全,然后就得去更改项目属性上的各个参数。除此之外,VS不同版本编译出来的DLL似乎还不能相互识别。怎么用怎么不舒服。 MinGW中除了gcc和g++的编译器外,也有make。只是它的名字是一个有前缀的make。如果需要使用,直接将

qq_36797488的博客 795

C++ 编写动态链接库和静态链接库

C++ 有两种链接库分为动态链接库和静态链接库,如果用VS IDE去生成相关的链接库 只需在工程属性上分别设置为静态链接库和DLL 即可得到相关不同的链接库 对于静态链接库由于在使用的时候生成巨大的.lib文件,通常情况下,对函数库的链接是放在编译时期(compile time)完成的。所有相关的对象文件(object file)与牵涉到的函数库(library)被链接合成一个可执行文...

arc11145的博客 228

常见术语

学习记录

linaYYY的博客 818

使用JNA,让java调用原生代码

JNA定义: JNA:java Native Access,是SUN公司开发的基于JNI的框架。JNI使得Java可以调用原生的c或者c++代码。 JNA与JNI(Java Native Interface)的差别: 性能:JNA在性能上不如JNI。由于JNA是在JNI的...

aoe41606的博客 696

Dev-C++配置SFML全攻略:解决版本兼容与链接错误

在C++图形与游戏开发入门阶段,集成开发环境(IDE)与多媒体库的配置是首要挑战。Dev-C++作为轻量级IDE,以其低门槛和快速启动特性,成为初学者接触C++的首选工具之一。SFML(Simple and Fast Multimedia Library)则是一个跨平台的多媒体库,通过封装底层图形、音频等接口,简化了2D游戏和多媒体应用的开发流程。其技术价值在于提供了面向对象的API设计,让开发者能更专注于业务逻辑而非底层细节。在应用场景上,SFML广泛用于教育领域的图形学教学、小型游戏原型开发及多媒体演示

weixin_26804345的博客 236

为什么在dev上能通过 在vs上通不过_让 Windows 的 R 用上 CUDA

特别感谢 @诸葛不亮 的点拨。R 是一个统计学经常用到的软件,提供了非常多的统计学函数。 但是它是一个单线程解释语言,面对大数据量的时候,往往性能跟不上,可以利用 Rcpp 编写 C++ 包提供给 R 使用,可以大大提高性能。 而对于大规模数据的处理,使用 CUDA 则是一个非常好的解决方案。 在 Linux 和 macOS 下, CUDA 程序和 C++ 程序都使用 gcc 编译器, 但是在 W...

weixin_39669204的博客 438

Dev-Cpp 5.11深度解析:轻量级C++开发环境配置与实战指南

集成开发环境(IDE)是程序员编写、调试和运行代码的核心工具,其核心原理在于将编辑器、编译器和调试器等组件整合,提供统一的开发界面。对于C++初学者或教学场景,一个轻量、开箱即用的IDE能有效降低学习门槛,让开发者聚焦于语言本身而非复杂的环境配置。Dev-Cpp 5.11正是这样一个经典选择,它集成了TDM-GCC编译器,支持C++11标准,安装便捷,资源占用低。在工程实践中,这类环境尤其适合快速验证算法、完成课程作业或在老旧设备上运行。本文将围绕**Dev-Cpp 5.11**的安装包结构、**TDM-G

weixin_34319817的博客 567

Dev C++开发lib和dll

下面通过例子简单介绍dev c++ 是如何开发lib和dll并使用的。关于dev c++ 我使用的版本是5.11,单击下载: 开发lib

{竹子} 8811

Dev c++ C语言实现第一个 dll 动态链接库 创建与调用

至于dll文件读取,做成插件,这个需要另一个代码——文件读取,因为现在是把dll的文件名写进程序里,每次更新功能,就得重写程序,所以需要尝试直接读取已有的dll名字,不用固定几个dll名称才能被调用。然后点击devc++ 的运行 按钮,即可弹出数字计算,因为直接点exe 不会中断程序,直接退出,就导致闪一下程序结束,没来得及看到运行效果。和dll.dll放在一起,这个时候也能点击exe文件,按键盘 q 然后按回车,才进行调用了。然后点击编译,就会在和cpp同文件夹里生成一个.dll 文件。

a1309602336的博客 1696
上一篇: 我的学习笔记(一):LinkedList在c++中的实现
下一篇: 使用adblock屏蔽网页特定内容,例如微博推广
wechat28
博客等级 码龄8年 3粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值