我试图在Dolphin6.1b2中使用第三方DLL (WinSCP .NET程序集)。我已经注册了DLL并在Windows7中生成了一个TypeLib。
在Dolphin中,我成功地使用了组件向导来生成接口,但是当我尝试注册控件和TypeLib时,会出现错误。注册我得到的控件
已加载WinSCPnet.dll,但无法找到DllRegisterServer入口点。
有人知道为什么会失败吗?我还问了DLL的作者,他倾向于海豚问题,因为注册工作在Windows。
发布于 2016-07-14 14:56:44
DLL是一个.NET程序集,导入生成的TLB。
从:.NET下载“https://winscp.net/eng/download.php程序集/自动化包”
未包装,按包括readme_automation.txt注册。
启动新海豚,导入.tlb,使用WinSCP前缀生成(这样类就不会以_开头)。
打开工作区,导入WinSCP_Constants池,转换C#示例(https://winscp.net/eng/docs/library#example)的开始:
opts := WinSCP_SessionOptions new
protocol: Protocol_Sftp;
hostName = 'example.com';
userName: 'user';
password: 'mypassword';
sshHostKeyFingerprint: 'ssh-rsa 2048 ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff';
yourself.找到工作对象了..。
编辑:您的WinSCP论坛的概念“为了在海豚中使用它,您需要它的工具注册dll和tlib”是错误的。COM "source“只需要注册一次(如果是”老式“COM服务器,您可以使用regsvr32或dolphin -两者都是这样;对于.NET程序集,您必须使用.NET咒语)。在海豚端唯一真正需要的是导入以前注册的库。
如果有.TLB,我会选择.TLB,否则用.DLL试试运气。遗憾的是,对于一些标准的COM接口,微软从来没有提供过类型库,所以更糟糕的是(使用C/C++,或者手工创建结构/接口表)。
编辑2-进一步的问题:
1)你能解释一下类型化和“我创建”的库类之间的关系吗?(即海豚帮助教程)
海豚创建smalltalk类来反映COM类型/结构。您可以使用这些来实例化Smalltalk中的COM类型,调用它们的方法,传递它们(还有基本类型,例如字符串、整数、.)作为参数和获取返回值的Smalltalk类型(Dolphin为您完成所有转换,因此您可以+-忘记您正在调用外部代码)。
2)实现将库类映射到winscp接口的方法的示例。
我没有实现任何东西,我只是使用了生成的包装器(在后台,WinSCP COM对象-- SessionOptions -set创建了,并设置了一些属性)。
基本上,我只是说:
var opts = new WinSCP.SessionOptions().
opts.Protocol = Protocol.Sftp;
opts.HostName = .........只需查看WinSCP自动化文档/示例,然后将其转换为smalltalk语言(希望它能够自动工作;-)。
3) smalltalk方法协议:、hostName:、等等在哪里定义?我搜索了那张照片,他们不在那里。你怎么知道怎么用那些方法的名字?
由于SessionOptions (由海豚中的[PREFIX]_SessionOptions类表示)是一个IDispatch接口(海豚中IDispatch的子类),所以所有方法调用都是动态的。只要做正确的事情(&在必要的粒度上捕捉可能的失败),它就会“只工作(tm)”。
Smalltalk sibbling是#doesNotUnderstand: aMessage方法。
https://stackoverflow.com/questions/38376260
复制相似问题