- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I would like to use IVF to produce DLLs that are usable by my colleagues who still use CVF. Is this possible using project settings or !DEC directives such as ALIAS, etc? I am rather shaky on the naming conventions (is there a document that summarizes this somewhere? There are quite a few posts on this but their relation to each other is not always easy to follow).
I also noticed in practice (and by reading previous posts) that CVF-built DLLs work with IVF EXEs. How is this possible if the naming conventions are different?
I also noticed in practice (and by reading previous posts) that CVF-built DLLs work with IVF EXEs. How is this possible if the naming conventions are different?
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes - the simple way is to use the /iface:CVF option when building your DLL. This is an option under External Procedures > Calling Conventions. There are also directives for changing the naming and calling conventions in each compiler.
The differences in conventions are:
Calling convention: CVF uses STDCALL, IVF uses C
Naming: CVF follows the STDCALL convention of adding @n to the name, where n is the number of bytes pushed onto the stack for the arguments, IVF doesn't add a suffix
String length: CVF puts it immediately after the string address in the argument list, IVF puts all the string lengths at the end
The differences in conventions are:
Calling convention: CVF uses STDCALL, IVF uses C
Naming: CVF follows the STDCALL convention of adding @n to the name, where n is the number of bytes pushed onto the stack for the arguments, IVF doesn't add a suffix
String length: CVF puts it immediately after the string address in the argument list, IVF puts all the string lengths at the end
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Steve Lionel (Intel)
Yes - the simple way is to use the /iface:CVF option when building your DLL. This is an option under External Procedures > Calling Conventions. There are also directives for changing the naming and calling conventions in each compiler.
The differences in conventions are:
Calling convention: CVF uses STDCALL, IVF uses C
Naming: CVF follows the STDCALL convention of adding @n to the name, where n is the number of bytes pushed onto the stack for the arguments, IVF doesn't add a suffix
String length: CVF puts it immediately after the string address in the argument list, IVF puts all the string lengths at the end
The differences in conventions are:
Calling convention: CVF uses STDCALL, IVF uses C
Naming: CVF follows the STDCALL convention of adding @n to the name, where n is the number of bytes pushed onto the stack for the arguments, IVF doesn't add a suffix
String length: CVF puts it immediately after the string address in the argument list, IVF puts all the string lengths at the end
Note that you cannot pass deferred shape arrays, as the binary format of the deferred shape array descriptorhas changed between CVF and IVF. As far as I know, there is no simple solution around this problem.
regards,
Thomas

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page