在传递 String-like 参数的 DLL 中调用过程

Calling a procedure in a DLL passing String-like parameters

我有一个包含表单的 DLL。 我有一个调用此 DLL 的应用程序。 我试图通过应用程序的调用在 DLL 内的表单中放置一个标题。

以下是 DLL 创建表单的方式:

procedure CallEmployee(Title: PWideChar); export; stdcall;
begin
   Frm_Standard := TFrm_Standard.Create(nil,DA,[],[]); //I have a modified Constructor
   Frm_Standard.Caption := Title;

这是应用程序中 DLL 过程的声明:

procedure CallEmployee(Title: PWideChar); external 'Employee.dll';

这就是我现在打电话的方式:

//I wanna put a title according to an specific test (Not this one, obviously)
if 2 = 2 then 
  CallEmployee(PWideChar('This Title'));

我正在使用 PWideChar,因为我发现 String 在这种情况下不起作用。

一定是我遗漏了一些小东西,但我研究了但找不到解决方案。

我为函数找到了一些东西,但是因为我不需要 return 任何参数,所以我使用了一个简单的过程。或者这可能是我问题的根源?

我正在使用 Delphi XE7。

很抱歉,如果这个问题无关紧要或已经有人问过,但我找不到。如果它已经有答案,请告诉我,我会删除这个问题。

啊,其他都完美,程序调用了Form,显示正确,但是标题总是这样:

Weird Title

您错过了调用约定。替换:

procedure CallEmployee(Title: PWideChar); external 'Employee.dll';

procedure CallEmployee(Title: PWideChar); stdcall; external 'Employee.dll';