社区
C++ 语言
帖子详情
能不能在DLL中存放类以供其他程序使用?
zyq_123
2012-02-19 10:36:30
函数我知道可以,但类、变量等能不能存放在DLL中供其他程序使用呢?
...全文
100
13
打赏
收藏
能不能在DLL中存放类以供其他程序使用?
函数我知道可以,但类、变量等能不能存放在DLL中供其他程序使用呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
赵4老师
2012-02-20
打赏
举报
回复
查MSDN是Windows程序员必须掌握的技能之一。
Furney
2012-02-20
打赏
举报
回复
查微软的帮助文档,上面应该是有这方面的例子程序。
一叶之舟
2012-02-20
打赏
举报
回复
[Quote=引用 5 楼 lactoferrin 的回复:]
在源代码中使用编译器扩展
extern __declspec(dllexport) int a=0;
类就是class __declspec(dllexport) cls{};
导出类就是导出类的方法和静态变量
可以使用def文件来导出
library dllname
exports
item1
item2..
c++的导出要使用修饰名
[/Quote]
当然可以,这就类库的概念,MFC中的类都在以这样的原理提供 的。
ketet
2012-02-20
打赏
举报
回复
可以使用PIMPL模式
赵4老师
2012-02-20
打赏
举报
回复
浏览一下《COM本质论》?
[Quote=引用 10 楼 zyq_123 的回复:]
那里有MSDN下载?
[/Quote]
http://www.verycd.com
http://www.gougou.com
Lactoferrin
2012-02-20
打赏
举报
回复
用在线版
zyq_123
2012-02-20
打赏
举报
回复
那里有MSDN下载?
zO_Oz
2012-02-19
打赏
举报
回复
MSDN上直接有例子。
Lactoferrin
2012-02-19
打赏
举报
回复
在源代码中使用编译器扩展
extern __declspec(dllexport) int a=0;
类就是class __declspec(dllexport) cls{};
导出类就是导出类的方法和静态变量
可以使用def文件来导出
library dllname
exports
item1
item2..
c++的导出要使用修饰名
zyq_123
2012-02-19
打赏
举报
回复
[Quote=引用 3 楼 lactoferrin 的回复:]
可以
windows里面的COM就是这样,还有dll版的c++运行库就把cout导出给别人用
[/Quote]
能不能做导出一个类,导出一个变量给我学习一下。
Lactoferrin
2012-02-19
打赏
举报
回复
可以
windows里面的COM就是这样,还有dll版的c++运行库就把cout导出给别人用
zyq_123
2012-02-19
打赏
举报
回复
[Quote=引用 1 楼 taodm 的回复:]
为什么不买本《windows核心编程》?
[/Quote]
为什么不去教《windows核心编程》?
taodm
2012-02-19
打赏
举报
回复
为什么不买本《windows核心编程》?
ORACLE免客户端直接通过
DLL
访问数据库的
DLL
包
安装在客户端的应用
程序
要连接Oracle数据库服务器,需要Oracle数据库的驱动
程序
,接口文件和各类支持文件。这些文件必须和应用
程序
存放
在相同的目录下,如果单独
存放
,可以设置环境变量,使应用
程序
在相应目录下找到这些文件。这里就是这些文件的整理,
供
大家参考
使用
,里面有
使用
说明.刚才上传后才发现少了一个文件OCIAppDir\oracore\zoneinfo\timezlrg.dat ,把这个文件加上就行了,整个包总共是42个文件
游戏引擎以Lua脚本驱动的经典扫雷游戏(加壳版)
游戏引擎以Lua脚本驱动的经典扫雷游戏
程序
介绍: 1、开发环境VC6 2、UI
使用
MFC 3、绘图
使用
GDI 4、声音
使用
mmsystem媒体功能 5、Lua开发包版本lua5.1.4 游戏引擎: 1、Lua
程序
驱动引擎QLua.
dll
版本2.0,支持对Lua源文件进行动态上壳,并支持壳上运行(作者自主设计开发) 2、QLua.
dll
基于lua5.1.4开发包 3、Lua源文件未上壳,
存放
在Lua/MyMine/下 4、Lua/MyMine/MyGame.lua
中
含有完整扫雷游戏算法(作者自主设计开发) 其它说明: 1、本例程仅
供
用于为广大Lua语言追随者提
供
入门学习资料 2、本例程Lua相关
程序
与算法非开源作品,未经作者本人允许,请勿用于商业用途 3、本例程不提
供
QLua引擎开发包,如有需求,请联系作者商榷
VB编程常用的模块及CTL控件集打包.rar
VB一些常用控件集,以及一些方法模块,编辑框.ctl、进度条、全局热键钩子、网站服务器、托盘控件、WinSock.ctl、曲线图.ctl、压缩算法-升级版.cls、数组加解密.cls、打开文件属性面板.bas等,其
中
一个模块的部分代码摘录如下: ------------------------------------------------------------------------------------------ ‘遍历进程,查找notepad.exe MyRemoteProcessId = OpenProcess(PROCESS_CREATE_THREAD PROCESS_VM_OPERATION PROCESS_VM_WRITE PROCESS_VM_READ, False, ProcessInfo.th32ProcessID) ‘打开进程获得notepad的句柄
供
后面的操作
使用
Dll
FileName = "C:Vblegend.
dll
" My
Dll
FileLength = Len(
Dll
FileName) 1 ‘学过C语言的朋友应该知道字符串最后要一个ASCII 0标志结尾,所以要加1 My
Dll
FileBuffer = VirtualAllocEx(MyRemoteProcessId, 0, My
Dll
FileLength, MEM_COMMIT, PAGE_READWRITE) ‘在指定进程里申请一块内存区域出来
供
我们
存放
字符串“c: est.
dll
“ ‘传string给api时,byval byref有区别,应该
使用
byval,这样会传给api一个标准的C字符指针,
不能
byref,否则函数调用没问题 ‘但是起不到预期效果,VirtualAllocEx返回的是申请到的内存地址值. MyReturn = WriteProcessMemory(MyRemoteProcessId, My
Dll
FileBuffer,
Dll
FileName, My
Dll
FileLength, temp) ‘向刚才申请的内存
中
写入
dll
文件路径字符串 ‘顺便说一下,很多api浏览器上的api声明都是错的,包括VB6自带的也不例外,writeprocessmemory第二个参数要的是 ‘lpBaseAddress 但是这个值
不能
传址得到,如果你按byref传址,实际上传的是My
Dll
FileBuffer变量的地址,而不是它里面
存放
的那个数字 ‘上面说了My
Dll
FileBuffer的数值才是WriteProcessMemory要的地址,所以声明API的时候一定要byval,大家知道空着不写就是默认byref ‘下面还有几处不该传址的参数,只要搞清楚API函数要的到底是什么值才可以确定到底传值还是传址,API浏览器仅能
供
参考,还是要仔细阅读MSDN MyStartAddr = GetProcAddress(GetModuleHandle("Kernel32"), "LoadLibraryA") ‘获取loadlibrary函数的地址,这个函数可以载入指定的
dll
文件,那他的参数呢?就是我们刚才在notepad.exe进程里写入的“c: est.
dll
“ ‘不过还得让CreateRemoteThread告诉他.另外简单的说一下windows下应用
程序
的内存管理,我也不很懂,呵呵,win32下的应用
程序
‘的内存区域是隔开的,每个
程序
有自己的一块内存
不能
直接访问别的
程序
的内存区,当然,这里调用的几个系统函数有访问别的
程序
内存区域的特权 ‘而且每个应用
程序
的内存区域都映射到系统内存区域里,也就是说在这里GetProcAddress得到的VB
程序
里LoadLibraryA函数的入口地址和 ‘notepad
程序
里的LoadLibraryA函数地址是一致的(映射的作用),所以不必担心.另外在VB写的
程序
里 ‘要
使用
LoadLibraryA,notepad不是用vc写的吗?要注意根notepad没关系,我们现在是在自己的VB
程序
里面找LoadLibraryA函数的入口. ‘还有要注意函数大小写,api函数和vb不一样的。 MyResult = CreateRemoteThread(MyRemoteProcessId, 0, 0, MyStartAddr, My
Dll
FileBuffer, 0, temp) ‘好了,现在该让LoadLibrary载入“c: est.
dll
“吧,现在CreateRemoteThread做的就是在notepad进程
中
把控制权转到LoadLibrar
游戏引擎以Lua脚本驱动的经典扫雷游戏
游戏引擎以Lua脚本驱动的经典扫雷游戏
程序
介绍: 1、开发环境VC6 2、UI
使用
MFC 3、绘图
使用
GDI 4、声音
使用
mmsystem媒体功能 5、Lua开发包版本lua5.1.4 游戏引擎: 1、Lua
程序
驱动引擎QLua.
dll
版本2.0,支持对Lua源文件进行动态上壳,并支持壳上运行(作者自主设计开发) 2、QLua.
dll
基于lua5.1.4开发包 3、Lua源文件未上壳,
存放
在Lua/MyMine/下 4、Lua/MyMine/MyGame.lua
中
含有完整扫雷游戏算法(作者自主设计开发) 其它说明: 1、本例程仅
供
用于为广大Lua语言追随者提
供
入门学习资料 2、本例程Lua相关
程序
与算法非开源作品,未经作者本人允许,请勿用于商业用途 3、本例程不提
供
QLua引擎开发包,如有需求,请联系作者商榷
数据库管理系统SQL-Server.doc
数据库管理系统SQL Server之总预览(零) 外企公司来了个老外主管,
中
文还不错。下午主管打电话跟客户说:"请问是野种吗?"大 家都愣了。他又说请问是野种吗?只听客户接通后,大声回骂到:"你才是野种,你全家 都是野种。"说完啪的一声把电话给挂了,大家一看他手里的客户单,原来是叶总。 1. 数据库管理系统SQL Server之概述(一) 2. 数据库管理系统SQL Server之企业管理器(二) 3. 数据库管理系统SQL Server之T-SQL语言(三) 零测试 数据库管理系统SQL Server之概述(一) 去相亲,见一娇小可爱女生,两人聊得很是投机,后来聊到体重,她让我猜她有多重 "肯定不过一百斤" "你怎么知道?"女崇拜的问。 LZ当时脑子一抽:"体重不过百,不是平胸就是矮,你两样都占了,所以肯定没过百" 然后。 就没有你然后了。 1. SQL Server的简介 a) SQL Server是Microsoft公司推出的适用于大型网络环境的关系型数据库管理系统,它 支持客户/服务器体系结构,能够支持大吞吐量的事务处理,也能在Microsoft Windows Server网络环境下管理数据存取的应用
程序
b) SQL Server是开放式的系统,因此可以很好地与其他系统进行交互操作 2. SQL Server的结构 a) 数据库:32767个数据库,最小为1MB,最大为1TB; b) 表:每个数据库最多20亿个表,表
中
每行最大字节数为8060 c) 列:每个表最多1024个列 d) 索引:每个表一个簇式索引,最多249个非簇式索引,一个复合索引最多有16个索引关 键字 e) 存储过程:一个存储过程最多可以有1024个参数和最多32级嵌套 f) 用户连接:32767个 g) 锁定及打开的对象:20亿个 h) 打开的数据库:32767个 3. SQL Server的版本 a) SQL Server 企业版:作为生产数据库服务器
使用
,支持SQL Server
中
的所有可用功能,并可根据支持最大的web站点和企业联机事务处理及数 据仓库系统所需的性能水平进行伸缩; b) SQL Server 标准版:作为小工作组或部门的数据库服务器
使用
; c) SQL Server 个人版:
供
移动的用户
使用
,这些用户有时从网络上断开,但所运行的应用
程序
需要SQL Server数据存储; d) SQL Server 开发版:
供
程序
员用来开发将SQL Server用作数据存储的应用
程序
,虽然开发版支持企业版的所有功能,使开发人 员能够编写和测试可
使用
这些功能的应用
程序
,但是只能将开发版作为开发和测 试系统
使用
,不用作为生产服务器
使用
。 4. SQL Server的系统目录 a) \BackUp
存放
备份文件 b) \Binn
存放
客户端和服务器端可执行文件与
DLL
文件 c) \Books
存放
联机文档 d) \Data
存放
数据库文件,包括系统数据库,实例数据库和用户数据库 e) \DevTools\Include
存放
OLE DB的Include文件(*.h) f) \DevTools\Lib
存放
OLE DB
程序
库文件(*。lib) g) \DevTools\Samples
存放
范例
程序
文件 h) \Ftdata
存放
全文索引目录文件 i) \Html
存放
HTML文档 j) \Install
存放
有关安装方面的信息文件 k) \Jobs
存放
工作文件 l) \Log
存放
日志文件 m) \Repldata
存放
复制数据 n) \UpGrade
存放
升级工具及升级文件 5. SQL Server自动创建的数据库 在安装SQL Server时,安装
程序
会自动创建4个系统数据库和两个范例数据库,系统数据库由系统 自动维护 a) Master数据库:记录了所有SQL Server的系统信息、登录账号、系统配置设置、系统
中
所有数据库及其系统信息 以及存储介质信息; b) Model数据库:是SQL Server为用户创建数据库提
供
的模版数据库,每个新建的数据库都是在一个Model 数据库的副本上扩展而生成的,所以对Model数据库的修改一定要小心; c) Msdb数据库:主要用于SQL Server存储任务计划信息、事务处理信息、备份恢复信息以及异常报告等; d) Tempdb数据库:
存放
所有临时表和临时的存储
程序
,并且提
供
SQL Server
存放
目前
使用
中
的表,它是一个全局的资源,临时表和存储
程序
可
供
所有用 户
使用
.每次SQL Server启动时它会自动重建并重设为默认大小,
使用
中
它会依需自动增长; e) Northwind数据库:是SQL Server提
供
的范例数据库,包含一个称为Nortwind Trader公司的销售数据库; f) Pub
C++ 语言
64,646
社区成员
250,476
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章