找回密码 注册 QQ登录
一站式解决方案

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18396|回复: 24
打印 上一主题 下一主题

可否由UG动态库向导扩展为win32dll?

[复制链接]
跳转到指定楼层
1
发表于 2005-6-9 22:54:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
可否由UG动态库向导扩展为win32dll?如何实现呢?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2005-6-9 23:35:36 | 只看该作者
UG动态库向导所做的DLL,就是win32 dll
3
发表于 2005-6-10 10:45:00 | 只看该作者
UG动态库向导所做的DLL,就是win32 dll
---
谢谢键盘兄,如果是这样,
  
一般用动态库向导生成的win32dll 都有stafx.h,而ug动态库为什么没有?
  
我想在UG向导环境中隐式加载win32dll,编译时会报错头文件tablelinking.h(23) : error C2504: 'CWinApp' : base class undefined
为什么呢?
  
有没有办法在UG向导环境中加载win32dll呢?
4
发表于 2005-6-10 11:23:10 | 只看该作者
stdafx.h是VC++编译器默认添加的。C程序就没有。它可以去掉的,设置一下工程设置里的预编译头文件项就可以。
  
你说的出错,是不是因为你include的文件中有MFC类的声明? 而你的win32 dll没有设置为支持MFC库。如果你include的文件中是纯的C接口的声明,不应该出现问题。常规的MFC的DLL可以被任何WIN32程序所调用。
  
要了解DLL,去这里看看:
https://kenbeyond.blogchina.com/kenbeyond/927391.html
5
发表于 2005-6-11 12:07:56 | 只看该作者
嗯,道理,我在UGwizarddll头文件加#inclde <windows.h>后用显式链接是可以,说明UGwizarddll是可以调用win32动态库,至于隐式链接,试了几次,因为该win32dll头文件有些ADO指针声明,还是编译不了。还在想办法
6
发表于 2005-6-11 12:12:44 | 只看该作者
对了,“我想在UG向导环境中隐式加载win32dll,编译时会报错头文件tablelinking.h(23) : error C2504: 'CWinApp' : base class undefined 为什么呢? ”---刚开始还以为UGwizarddll不支持WIN32的类呢,加#inclde <windows.h>头文件就不会这样报错。
7
发表于 2005-6-11 17:59:11 | 只看该作者
最好别采用UG向导,直接使用MFC  DLL格式。这样可以避免许多问题。
8
发表于 2005-6-12 10:24:17 | 只看该作者
是这样的。但因为原来已经用USTYLER做好了部分控件,虽然感觉不是很爽,但要全部重写,也挺花时间。现在是在想个办法,要让原来的控件能与SQL数据库通信就行,但试了好久,不怎么理想啊,键盘兄你有什么好办法吗?
下面是我的控件间数据传递几种方案:
1、数据文件,缺点显而易见,而且系统已经有部分数据在SQLSERVER2000内
2、UGWIZARDDLL与SQL通信,想把编好的UGWIZARDDLL扩展成完整的WIN32DLL或MFC常规DLL,但处处受限,不好扩展,真不知道UGWIZARD到底怎么封装的,又怎么扩展?
3、UGWIZARDDLL与SQL通信,通过调用WIN32DLL输出的ADO_RECORDSET指针,利用指针与数据库通信,试过,但在UGWIZARD中RECORDSET指针就失灵,不能读也不能写,哎,想放弃!
4、新建MFCDLL建立ADO与数据库连接,C++文件读写与ADORECORDSET通信。加载UG控件让UG与数据文件通信。好复杂啊,还没试。
方案2似乎理想一点,不知道能不能实现?键盘兄,一定给我出个主意
9
发表于 2005-6-12 11:22:25 | 只看该作者
你的第二种方法,和第四种方法没什么区别吧,在一个win32 dll中,添加MFC的库和头文件就是了,这需要你了解需要哪些文件。
  
第4种可行。
  
第三种应该也可行。ADO是COM技术,COM是二进制文件,应该可以调用的。我觉得你要想在原来的程序环境中工作,还是选用这种较合理。做一个资源DLL,里面封装ADO的对象指针。可能难度大吧。
  
我以前只是在MFC DLL里用过ADO,用UISTYLER没问题,但后来因为商用数据库不能满足我们的需要,就没有再做过这个。
10
发表于 2005-6-13 17:42:24 | 只看该作者
没怎么表达明白,
第二种方案通信过程应该是这样:UGWIZARD--(扩展)MFC==SQL(--表示向前单向,==表示双向,下同)
第四种方案是这样:UGWIZARD==数据文件==基于MFC的ADO连接动态库函数==SQL。因为第三种方案WIN32动态库输出的指针到UG环境就失灵(用WIN32控制台也不行,我想可能是动态库无法调用RECORDSET类函数)所以改用MFCADODLL输出数组、接收数组并更新SQL。UGWIZARD与MFCADODLL之间以数据文件为中介!应该但也不灵活多少啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2024-12-26 01:30 , Processed in 0.029883 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表