以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 怎样声明dll中的类 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=62153) |
||||
-- 作者:东坡一剑 -- 发布时间:2014/12/26 11:50:00 -- 怎样声明dll中的类 别的dll文件中有一个类,源代码如下: Public Class person Public ID As String Public name As String Public sex As String Public birthday As Date Public Function getName(ByVal per As person) As String Return Me.name End Function Public Sub New(ByVal xID As String, ByVal xName As String, ByVal xSex As String, ByVal xBirthday As String) Me.ID = xID Me.name = xName Me.sex = xSex Me.birthday = xBirthday End Sub End Class 在全局代码中这样声明: <DLLImport("classlibrary1.dll",CharSet:=CharSet.Ansi,CallingConvention:=CallingConvention.Cdecl)> _ Public Function getName(ByVal per As person) As String End function 窗口中按钮click代码如下: Dim you As person you = new person("100","老张","男",#5/17/1990#) messagebox.show((you.getName(you))) 问题是: 1、如果直接将以上dll的源代码放进全局代码,命令窗口的代码可以成功运行。 2、如果以引用dll的方式编译全局代码会失败,提示为:未定义类型 person 请教:该如何以dll引用的方式来实现? 附上项目 |
||||
-- 作者:有点甜 -- 发布时间:2014/12/26 12:03:00 -- 1、你的dll有问题
2、引用后,代码这样写
Dim you As classlibrary1.person |
||||
-- 作者:东坡一剑 -- 发布时间:2014/12/26 12:54:00 -- 感谢甜老师! 我编译dll的运行时比较新,所以foxtable无法加载。你用的什么版本编译的呢?VC6.0行不行?
未能加载文件或程序集“ClassLibrary1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null”或它的某一个依赖项。生成此程序集的运行时比当前加载的运行时新,无法加载此程序集。 |
||||
-- 作者:有点甜 -- 发布时间:2014/12/26 14:09:00 -- 就是用VS编译的啊,新建项目的时候,.net Framework要设置成2.0 |
||||
-- 作者:东坡一剑 -- 发布时间:2014/12/26 14:53:00 -- 非常感谢!最近就想把foxtable和vs结合起来用。狐表这一部分的帮助写得真不怎么样。 还想问一下关于声明API函数的问题,是否有什么比较合适的例子? |
||||
-- 作者:有点甜 -- 发布时间:2014/12/26 15:03:00 -- 声明就这样声明,类似
在Foxtable的全局代码中定义好API函数:
Public Declare Function CVR_InitComm Lib "termb.dll" Alias "CVR_InitComm" (ByVal Port As Integer) As Integer \'连接设备 |