Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / lazarus / 2019-03

Lazarus 2.0 doesn't compile LabJack wrapper

5 messages · 3 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Joe

Hi,

we control some laboratory equipment with a LabJack U3-HV interface. The manufacturer of the interface provided a dll file and a Delphi wrapper for the dll file to read and set the ports of the interface. This works well with Delphi XE2.

But when I try to migrate to Lazarus 2.0, this wrapper is not accepted. It appears a error message 'Calling convention doesn't match forward'. Delphi XE2 doesn't complain about any convention difficulties in the wrapper file. I tried to harmonize the calling convention prescriptions in the interface and the implementation part of the wrapper- no success.

Is this a Lazarus or FPC bug, or a (perhaps undocumented) incompatibility between Delphi XE2 and Lazarus 2.0? Or do I oversee something? We are using Win 10, Version 1809 (64). The wrapper itself  can be downloaded from
http://transfer.joepgen.com/wrapper.pas

Regards --  Joe

Reply by email

Juha Manninen
to Joe

The implementation part is missing "stdcall;"
You also need to match the parameters and return types of functions between interface and implementation parts.
Actually the implementation part is not needed (I think). Just give the external DLL name in the interface.

Juha

Reply by email

Mattias Gaertner
to Joe: we control some laboratory equipment with a LabJack U3-HV interface. The manufacturer of…
Show quoted text 13 lines
Hi, we control some laboratory equipment with a LabJack U3-HV interface. The manufacturer of the interface provided a dll file and a Delphi wrapper for the dll file to read and set the ports of the interface. This works well with Delphi XE2. But when I try to migrate to Lazarus 2.0, this wrapper is not accepted. It appears a error message 'Calling convention doesn't match forward'. Delphi XE2 doesn't complain about any convention difficulties in the wrapper file. I tried to harmonize the calling convention prescriptions in the interface and the implementation part of the wrapper- no success.

Have you tried compiling with {$mode delphi} instead of {$mode objfpc}?

Is this a Lazarus or FPC bug, or a (perhaps undocumented) incompatibility between Delphi XE2 and Lazarus 2.0?

It is documented. For example:
https://www.freepascal.org/docs-html/prog/progse74.html

Or do I oversee something? We are using Win 10, Version 1809 (64). The wrapper itself can be downloaded from http://transfer.joepgen.com/wrapper.pas

Mattias

Reply by email

Joe
to Mattias Gaertner
Mattias Gaertner wrote
Have you tried compiling with {$mode delphi} instead of {$mode objfpc}?

The wrapper did not contain any '{$mode objfpc}' or '{$mode delphi}' instruction. I inserted '{$mode delphi}', and the wrapper could be compiled. Thanx, Mattias.

--  Joe

Reply by email