Forum > Beginners
DLL usable in Delphi?
(1/1)
py2pa:
Consider the following unit and library:
--- Code: ---unit support;
{$mode objfpc}{$H+}
type
TSomeList = specialize TFPGList<some_type>;
--- End code ---
--- Code: ---library a_dll_for_delphi_developer;
{$mode delphi}{$H+}
uses
support;
function DoSomething: TSomeType;
exports
DoSomething;
end.
--- End code ---
Now, if I change the directive in the unit to {$mode delphi}{$H+} (which for my purpose seems the most sensible thing to do), the compiler rejects the identifier "specialize". So, I change the directive back to objfpc mode and create the .dll. My question is: will the Delphi developer be able to use this library without problems?
skalogryz:
They will be able to use just fine as long as your library exported functions will not use following types:
* strings (ansi,unicode) (wideStrings could be ok)
* classes or objects (using com interfaces is ok)
* dynamic arrays (using open arrays could be ok, but undesired. using pointer types is ok)
thus:
--- Code: ---function MyFunc(name: PChar)
--- End code ---
is good
--- Code: ---function MyFunc(const name: string)
--- End code ---
is not good
py2pa:
All my strings are AnsiStrings. Should I convert them to PChar then?
taazz:
--- Quote from: py2pa on August 20, 2014, 11:13:35 pm ---All my strings are AnsiStrings. Should I convert them to PChar then?
--- End quote ---
Yes at least. There is one more think to take care, there shouldn't be any memory allocation inside the dll at all. You force the calling application provide you with a buffer long enough to hold the result you want to pass. Simple passing around pchars instead of ansistrings is not enough.
Navigation
[0] Message Index