引用自定义控件,导致更换机器后EXE无法运行问题

championt 2009-06-28 01:03:52
近期做了个程序,引用了个开源的控件,结果工程中引用它后,导致每次换个机器就无法运行之前生成的exe,必须重新编译才行,搜索论坛,发现了个古董帖子上有个一摸一样的情况:http://topic.csdn.net/t/20031218/15/2577597.html

问题是按照里面MSTOP的解释:

1.在OCX或DLL中,所有具体定义的控件(除标准EXE的控件以外),一律用Object 代替.所有其它对象用Variant代替.在自定义类型中不能出现具体的类型.只能用Object 或 Variant

2.将
PUBLIC TYPE ....
....................
END TYPE
放在一个类模块中去定义.


我重新修改了下控件,还是存在同样的问题,希望大家指教。

如果谁制作ocx遇到这方面问题有经验的希望留个邮箱,我把控件发过去,帮我看看到底哪个地方还需要修改?

...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
championt 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 lyserver 的回复:]
my.ocx中的类的名称,比如类名为test,则为my.test
[/Quote]

不行啊,提示429错误啊~~"ActiveX部件不能创建对象"~
郁闷啦,lyserver有空帮我瞅一下吧,本身控件不是很复杂,只是没处理过,实在找不出问题所在~
留个邮箱,我给你发过去好吧~~3Q~
lyserver 2009-06-28
  • 打赏
  • 举报
回复
my.ocx中的类的名称,比如类名为test,则为my.test
championt 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 lyserver 的回复:]
可能你引用的那个控件被多次编译,又没有设置工程兼容属性。解决办法:变量定义为Object,然后使用CreateObject后期绑定;另外,在VB的类和控件中,不能直接使用UDT,可以使用一个类模拟UDT,或者在ODL文件里声明后编译成TLB并引用。
[/Quote]
谢谢你的回复,我感觉可行,但实际操作中有些疑问,请指教~!

按照你提供的建议,我把控件工程中代码里所有的UDT都单独写到一个类模块中了,取名UDTclass,然后重新编译了下那个控件,选择了二进制兼容。然后生成了一个OCX叫my.ocx。
然后在新建的工程中引用这个ocx,按你说的,进行后期绑定:
dim a as object
set a = CreateObject("");

我想问下,这个双引号里写什么呢?
lyserver 2009-06-28
  • 打赏
  • 举报
回复
可能你引用的那个控件被多次编译,又没有设置工程兼容属性。解决办法:变量定义为Object,然后使用CreateObject后期绑定;另外,在VB的类和控件中,不能直接使用UDT,可以使用一个类模拟UDT,或者在ODL文件里声明后编译成TLB并引用。
championt 2009-06-28
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 lyserver 的回复:]
更换机器后,要复制并注册那个控件.
[/Quote]

这个在那个帖子中已经讨论过了,不是简单的注册的问题。

附帖子地址:http://topic.csdn.net/t/20031218/15/2577597.html
lyserver 2009-06-28
  • 打赏
  • 举报
回复
更换机器后,要复制并注册那个控件.

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧