求教delphi中DLL 函数的声明问题

wangyang4506 2014-03-06 02:29:54
做VB转DELPHI的项目遇到一个问题:

VB中引用的一个DLL:

Library PSimSystem
C:\Documents and Settings\Administrator\桌面\2011-07-01 combo\SimSun.dll

Class SimSystemCLS
PSimSystem 的成员

SYSDONE
Function SYSDONE(OutCCALCULATION As Integer, OutECALCULATION As Integer, OutTwiC As Double, OutTwoC As Double, OutQwC As Double, OutRiC As Double, OutaPwC As Double, OutTwiE As Double, OutTwoE As Double, OutQwE As Double, OutRiE As Double, OutaPwE As Double, OutQe As Double, OutPin As Double, OutQk As Double, S As Integer, R As Integer) As Integer
PSimSystem.SimSystemCLS 的成员

VB中的使用方法:

Dim sys As SimSystemCLS '定义sys作为DLL类(SimSystemCLS)的一个对象
Set sys = New SimSystemCLS '设置sys作为DLL的一个新实例

frmmain.Label12.Caption = sys.SYSDONE(CCALCULATION, ECALCULATION, TwiC, TwoC, QwC, RiC, aPwC, _
TwiE, TwoE, QwE, RiE, aPwE, Qe, P, Qk, s, R)

现在要转到DELPHI:

我声明的:

function SYSDONE(var OutCCALCULATION:Integer;var OutECALCULATION:Integer;var OutTwiC:Double;var OutTwoC:Double;var OutQwC:Double; var OutRiC:Double;var OutaPwC:Double;var OutTwiE:Double;var OutTwoE:Double;var OutQwE:Double;var OutRiE:Double;var OutaPwE:Double; var OutQe:Double;var OutPin:Double;var OutQk:Double;var S:Integer;var R:Integer):Integer;stdcall;external 'SimSun.dll';

编译的时候不报错,运行的时候提示: 无法定位程序输入点SYSDONE 于动态链接库 SimSun.dll 上。

想知道到底哪边做的不对,VB用好好的,delphi就不行呢?


...全文
278 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangyang4506 2014-03-06
  • 打赏
  • 举报
回复
发现这个DLL是个COM组件,自己对COM组件还不是很了解,研究了一天,终于解决了。谢谢大家。
lght 2014-03-06
  • 打赏
  • 举报
回复
vb里byVal传递的参数delphi里才用var
  • 打赏
  • 举报
回复
你的接口是用stdcall导出的吗?
lu仙深 2014-03-06
  • 打赏
  • 举报
回复
调用的地方,和DLL 里都加 stdcall;
lu仙深 2014-03-06
  • 打赏
  • 举报
回复
加 stdcall 试下看

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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