社区
进程/线程/DLL
帖子详情
为什么我的dll在导出了一些c++类后大小几乎增大了一倍,哪位大侠知道怎么回事,有什么方法可以让它变小
jackybh
2003-10-31 05:30:07
我用的是evc的编译环境,开始一个类都没有导出大小大概为60多k,后来导出了里面的很多类,大小一下变为了110k,可是我的代码一点也没变啊,谁知道是怎么回事,有什么方法可以解决啊?我在这些类里用了很多inline函数,是不是这个原因啊?
...全文
107
4
打赏
收藏
为什么我的dll在导出了一些c++类后大小几乎增大了一倍,哪位大侠知道怎么回事,有什么方法可以让它变小
我用的是evc的编译环境,开始一个类都没有导出大小大概为60多k,后来导出了里面的很多类,大小一下变为了110k,可是我的代码一点也没变啊,谁知道是怎么回事,有什么方法可以解决啊?我在这些类里用了很多inline函数,是不是这个原因啊?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
dysxq
2003-10-31
打赏
举报
回复
因为DLL中导出类与函数生成了导出表,一般来说是以函数名与类名导出的,当然会大许多,如果要减小,可以像MFC那样用序数导出,不过就要自己写一个DEF文件了,而且C++的函数与类导出时名称是像这样?OnPaint@CStaticEx@@QAEXXZ,用于个很烦的规则生成的。MFC的DEF文件在VC的源码目录下的INTEL目录下
jackybh
2003-10-31
打赏
举报
回复
什么叫静态编译和动态编译? 头文件只是申明不会影响最后输出文件的大小的吧,另外我把inline的开关关掉了,即不用inline,而且我的这些inline函数只是提供给外部模块调,自己里面没有用,所以不会展开.
我刚刚想到一个可能性:标准的dll的引出函数是stdcall,即由函数负责清栈,而c/c++默认的调用方式是cdcel,即由调用者负责清栈,所以如果我不导出,由于这些函数是被外部模块调用的,所以程序没有给我清栈的代码,而当我把它导出后,因为导出函数要遵循stdcall的方式,所以程序给我每个函数加了很多清栈的代码吧?
huanyun
2003-10-31
打赏
举报
回复
静态编译也比动态编译要大许多
w_flyer
2003-10-31
打赏
举报
回复
是这样的。因为inline就是直接在你的程序中展开。
同时你可能还包含了其他文件头,那虽然你的代码很少,都会让你的dll变得很大
C++
动态链接库视频教程(Windows动态链接库)
动态链接库在企业级开发中无处不在,本课程包含Windows动态链接库相关知识点,通过浅显易懂的代码与讲解,让你熟悉掌握动态链接库技术!
【
C++
码农】VC环境下
DLL
接口申明的三种方式
http://blog.csdn.net/supconsupcon/article/details/4345343 本文将介绍三种提供
DLL
接口的方式(对于如何编写
DLL
内部的代码不做介绍),由于笔者工作时间不长,难免有疏漏的之处,还请各位
大侠
不吝赐教,谢谢! 方案一:个人认为算是比较“循规蹈矩”的一种 在
DLL
中写好接口的实现代码后,然后提供一个申明接口的头文件供调用者使用
[转载]有关
DLL
中New和外部Delete以以及跨
DLL
传递对象的若干问题
Q: 我们需要在
Dll
中new一个class或者struct的实例,通过接口把这个实例传给了主程序(调用
dll
的程序),最后这个实例的释放(delete)是由主程序来执行的,这时我们的问题出现了,vs.net抛出一个debug模式下的异常,是在delete函数中。后来我试了另外一种情况,即在主程序中new的实例在
dll
中delete也会有相同的问题。哪位
大侠
知道
为什么?
使用ffi-napi引入
C++
的
dll
引言 这一篇将介绍如何在node.js+electron环境中, 使用node-ffi/ffi-napi调用C/
C++
编写的动态链接库(即
dll
), 实现调用C/
C++
代码。 本教程适用于electron 4.x-6.x版本。 如electron 4.2.10版本, electron 5.0.6版本, electron 6.0.10版本。 ffi 实现这个功能, 主要使用的插件是ffi(Foreign Function Interface,外部函数接口)。 node-ffi是一个用于使用纯Ja
有关
DLL
中New和外部Delete以以及跨
DLL
传递对象的若干问题
Q:
我们需要在
Dll
中new一个class或者struct的实例,通过接口把这个实例传给了主程序(调用
dll
的程序),最后这个实例的释放(delete)是由主程序来执行的,这时我们的问题出现了,vs.net抛出一个debug模式下的异常,是在delete函数中。后来我试了另外一种情况,即在主程序中new的实例在
dll
中delete也会有相同的问题。哪位
大侠
知道
为什么?
另外,还有一个小问题,就是在
dll
中的
导出
(
dll
export)类中,如果
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章