社区
C语言
帖子详情
关于生成DLL的奇怪问题
flyrack
2012-06-08 09:13:37
我想把用C编译的几个Lib文件混合到一个Dll中,结果残念哎,报一堆函数未定义
是不是Dll只能用C++编译,那里面要是想调用各种C的Lib该怎么办
最坑爹的是要使用的Lib依赖另一个Lib,有木有解决办法啊
Code::Blocks里面能直接用C编译器生成DLL么
随便给个解决方法就行啊
...全文
48
3
打赏
收藏
关于生成DLL的奇怪问题
我想把用C编译的几个Lib文件混合到一个Dll中,结果残念哎,报一堆函数未定义 是不是Dll只能用C++编译,那里面要是想调用各种C的Lib该怎么办 最坑爹的是要使用的Lib依赖另一个Lib,有木有解决办法啊 Code::Blocks里面能直接用C编译器生成DLL么 随便给个解决方法就行啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
3 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
flyrack
2012-06-08
打赏
举报
回复
我手工修改了Code::Blocks的工程文件,居然编译过了,感觉应该算是Bug吧
散分
wshn13
2012-06-08
打赏
举报
回复
http://www.isotton.com/devel/docs/C++-dlopen-mini-HOWTO/C++-dlopen-mini-HOWTO.html
wshn13
2012-06-08
打赏
举报
回复
http://tldp.org/HOWTO/C++-dlopen/
这个应该对你有所帮助
Plugin
DLL
插件 咏南工作室
BDS2006下编译通过。 有没有使用过Adobe Photoshop如果用过,你就会对插件的概念比较熟悉。对外行人来说,插件仅仅是从外部提供给应用程序的代码块而已(举个例子来说,在一个
DLL
中)。一个插件和一个普通
DLL
之间的差异在于插件具有扩展父应用程序功能的能力。例如,Photoshop本身并不具备进行大量的图像处理功能。插件的加入使其获得了产生诸如模糊、斑点,以及其他所有风格的
奇怪
效果,而其中任何一项功能都不是父应用程序自身所具有的。 对于图像处理程序来说这很不错,可是为什么要花偌大的力气去完成支持插件的商业应用程序呢?假设,我们举个例子,你的应用程序要产生一些报表。你的客户肯定会一直要求更新或者增加新的报表。你可以使用一个诸如Report Smith的外部报表
生成
器,这是个不怎么样的解决方案,需要发布附加的文件,要对用户进行额外的培训,等等。你也可以使用QuickReport,不过这会使你身处版本控制的噩梦之中——如果每改变一次字体你就要Rebuild你的应用程序的话。 然而,只要你把报表做到插件中,你就可以使用它。需要一个新的报表吗?没
问题
,只要安装一个
DLL
,下次应用程序启动时就会看见它了。另外一个例子是处理来自外部设备(比如条形码扫描器)的数据的应用程序,为了给用户更多的选择,你不得不支持半打的各种设备。通过将每种设备接口处理例程写成插件,不用对父应用程序作任何变动就可以获得最大程度的可伸缩性。
黑月def修复统一用__stdcall-易语言
使用说明: 黑月静态编译.
dll
时的.def是__cdecl的约定名称,但实际上 易语言 在没有其他插件作用的情况下
生成
的函数都是__stdcall约定,导致了在C++等环境隐式调用
dll
(即使用.lib文件)时,声明成__cdecl则函数会被平两次栈,声明成__stdcall又无法通过编译。 本程序可以自动修改黑月的def文件内容,达到统一使用__stdcall的目的。 使用方法: 1.删除欲编译的黑月
dll
源码目录下的def文件,然后使用黑月静态编译
dll
,得到.h文件。 2.本窗口左边edit填上黑月
生成
的.h文件内容,点击下边按钮
生成
修正内容。 3.用修正内容替换
dll
目录下的def,重新黑月静态编译,得到修正的.lib文件。 另外: 使用了“ 正则表达式支持库(Deelx版) (2.3#0版) ”,但没有开扩展模式,如果旧版本想编译可以换成自己的实现。 本程序忽略了8字节参数,比如INT64,double这些类型。 不知道为什么
生成
的文件换行符卡在了
奇怪
的地方,但是不影响黑月编译。
Windows进程常用
DLL
模块注入技术
课程结合多种Windows进程常用
DLL
注入技术。远程线程注入APC注入,异步调用过程,向目标线程插入待执行任务从而完成注入。窗口消息注入,指定窗口进程注入,与全局钩子注入类似。环境块注入,获取进程上下文信息,直接性修改程序执行流程完成注入。进程入口点注入,在程序初始化的时机前将
dll
模块文件注入至目标主线程。进程调试级注入,涉及调试器相关功能调用知识点
dll
模块重定位内存注入,模拟操作系统加载PE文件方式,直接将
dll
文件内存数据写入目标进程并执行。导入表注入,涉及PE相关知识点,增加区段,移动导入表,增加导入表、增加导出函数,修复表项数据等。内核驱动级
Dll
模块注入技术,内核驱动入门扩展。
cs2dluawrap:CS2D Lua包装器
CS2D Lua包装器 Lua 5.1.4包装器,它调用未导出的CS2D的Lua 5.1.4函数。 允许Lua模块与CS2D兼容,而不会出现
奇怪
的(内存)错误! 这可以使服务器脚本编写者受益于使用外部Lua C模块。 这个东西只在服务器端运行!!! 参见 用法 有2种方法 编译cs2dlua.c作为lua51.
dll
/ liblua5.1.so和使用(其导入库)来构建其他Lua模块。 照常编译Lua模块,但不要链接到Lua 5.1.4
DLL
/共享库,而是cs2dlua.c编译单元添加1个文件cs2dlua.c ,就可以了。 将
生成
的模块放入CS2D服务器的根目录。 可以在以下位置找到这种方式的优点和缺点:
VS项目把算法
生成
DLL
调用过程中出现的
问题
1. 项目
生成
DLL
、LIB后,给其他项目添加相关依赖,使用
生成
DLL
时的头文件#include "Circle.h"调用失败,原因是需要链接Circle.h文件给相关项目。这里有点
奇怪
,我以为
生成
dll
和lib就不用原来的h和cpp文件,没想到h文件还需要。其中原理之后再弄清楚。2.调用时出现
dll
导出(无法解析的外部符号 "__declspec(
dll
import)),以为是自己
生成
DLL
时相关语句没写好,其实是链接用的h文件没有修改,不用来
生成
dll
的头文件里的_declspec关键字要删除掉。
C语言
69,373
社区成员
243,080
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章