相关疑难解决方法(0)

为什么WideString不能用作互操作的函数返回值?

我不止一次建议人们使用类型的返回值WideString进行互操作.

这个想法是a WideString和a一样BSTR.因为a BSTR是在共享COM堆上分配的,所以在一个模块中分配并在另一个模块中解除分配是没有问题的.这是因为所有各方都同意使用相同的堆,即COM堆.

但是,它似乎WideString不能用作互操作的函数返回值.

考虑以下Delphi DLL.

library WideStringTest;

uses
  ActiveX;

function TestWideString: WideString; stdcall;
begin
  Result := 'TestWideString';
end;

function TestBSTR: TBstr; stdcall;
begin
  Result := SysAllocString('TestBSTR');
end;

procedure TestWideStringOutParam(out str: WideString); stdcall;
begin
  str := 'TestWideStringOutParam';
end;

exports
  TestWideString, TestBSTR, TestWideStringOutParam;

begin
end.
Run Code Online (Sandbox Code Playgroud)

和以下C++代码:

typedef BSTR (__stdcall *Func)();
typedef void (__stdcall *OutParam)(BSTR &pstr);

HMODULE lib = LoadLibrary(DLLNAME);
Func TestWideString = (Func) GetProcAddress(lib, "TestWideString"); …
Run Code Online (Sandbox Code Playgroud)

delphi

48
推荐指数
2
解决办法
8541
查看次数

如何将Delphi字符串传递给Prism DLL?

我们尝试将字符串从本机Delphi程序传递给Delphi Prism DLL.传递整数没有问题,但DLL中的字符串不匹配.我们看到了Robert Love的代码片段以回应另一个问题,但是没有本机Delphi程序的代码.

我们如何将Delphi中的字符串传递给Delphi Prism DLL?

delphi oxygene delphi-prism delphi-2010

5
推荐指数
2
解决办法
1427
查看次数

如何在C#中使用Delphi Dll(带PChar类型)

这是Delphi DLL代码:

library Project2;

uses
  SysUtils,
  Classes;

{$R *.res}

function SimpleConv(const s: string): string;
var
  i: Integer;
begin
  Result := '';
  for i := 1 to Length(s) do
    if Ord(S[i]) < 91 then
      Result := Result + S[i];
end;

function MsgEncode(pIn: pchar; InLen: Integer; var pOut: pchar; var OutLen: Integer): Boolean; stdcall;
var
  sIn: string;
  sOut: string;
begin
  SetLength(sIn, InLen);
  Move(pIn^, sIn[1], InLen);

  sOut := SimpleConv(sIn);   // Do something

  OutLen := Length(sOut);
  GetMem(pOut, OutLen);
  Move(sOut[1], pOut^, OutLen);
  Result := OutLen …
Run Code Online (Sandbox Code Playgroud)

.net c# delphi pinvoke

3
推荐指数
1
解决办法
1万
查看次数

从unity3d调用delphi .dll的错误c#

我试图从unity3d C#代码调用.dll(由delphi制作)函数时遇到以下错误.

这是照片,

在此输入图像描述

和错误说,

在此输入图像描述

和.dll代码是,

在此输入图像描述

那么为什么会出现错误以及如何解决?

非常感谢!

c# delphi dll unity-game-engine

1
推荐指数
1
解决办法
807
查看次数