Foxtable(狐表)用户栏目专家坐堂 → [求助]Foxtable调用/引用VB6时代的dll,打开窗体提示“未知编译错误!”


  共有2931人关注过本帖树形打印复制链接

主题:[求助]Foxtable调用/引用VB6时代的dll,打开窗体提示“未知编译错误!”

帅哥哟,离线,有人找我吗?
蓝才文百
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
[求助]Foxtable调用/引用VB6时代的dll,打开窗体提示“未知编译错误!”  发帖心情 Post By:2016/1/21 14:33:00 [显示全部帖子]

大家好!我是Foxtable的新手。最近在做一个和老系统结合的程序。
由于老系统源代码没有,老系统中涉及到一个加解密文本的dll,我需要调用这个dll,使用里面的加解密函数。
我的操作是:
在foxtable->管理项目->外部引用 中,调入了此dll。会出现如下问题:
1.保存重新打开后,打开所有窗体,都会提示“未知编译错误!”,删除这个dll引用就不会再提示,所以这样引用看来不行,也不知道有什么其他办法。
2.是否可以在“全局代码”中,用 declare 引用?如何使用?全局代码是否就是vb中的module(*.bas的全局代码库)?

谢谢!

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/21 14:46:00 [显示全部帖子]

在VB6中,引用此dll后,就可以在代码中使用:
Private Sub Command1_Click()
Dim c as new PubClassModule.clsEncrypt
         msgbox "加密ABC:" & c.Encrypt("ABC")
        msgbox "解密代码:"  & c.ReEncrypt(c.Encrypt("ABC"))
End Sub

大概这样。x

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/21 14:47:00 [显示全部帖子]

忘记附件了。。。
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:pubclassmodule.rar


 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/21 15:00:00 [显示全部帖子]

OK,谢谢版主解惑,我试试先,搞定再来分享结果。

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/21 15:02:00 [显示全部帖子]

没有此dll的源码,不然才不用dll,没办法,呵呵。

 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/26 16:39:00 [显示全部帖子]

版主,我已用vs2008生成了interop.**.dll文件,引用到foxtable,我按照vb的语法,没法找到所需的类。
请教如何使用此dll呢?
以前的vb语法:
dim kkk as new clsEncy
text1.text=kkk.encode("abc")
text2.text=kkk.reencode(text1.text)

但提示:
编译错误 未定义类型“clsency"


 回到顶部
帅哥哟,离线,有人找我吗?
蓝才文百
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:小狐 帖子:392 积分:2446 威望:0 精华:0 注册:2015/1/31 23:19:00
  发帖心情 Post By:2016/1/27 11:56:00 [显示全部帖子]

谢谢版主,确实是这样!
我重新完整定义:
dim kkk as new prjDLL.clsEncy
就可以调用里面的函数了。
kkk.encode和kkk.reencode都可以使用了。
谢谢!

所以,和大家分享,如果要用老版本的dll:
一.如大红袍版主所说:

1、在vs工具那里新建一个windows项目;

 

2、引用Com,然后加入控件;

 

3、在项目的debug目录下,找到 interop.xxx.dll,然后在foxtable里引用。

二.引入后,定义的时候,要完整定义,然后就可以正常使用里面的函数了。
完整定义的意思是,一般你这个老dll文件是什么+里面的类名。比如我文件以前叫:
MyDLL.dll 经过vs引用编译处理,生成interop.MyDLL.dll文件,复制到foxtable项目,foxtable引用它。
在定义的时候,就要这样:
dim kkk as new MyDLL.MyClassName
kkk.Func1
kkk.Func2
等就可以调用啦。



 回到顶部