delphi - 调用 DLL 中的过程并传递类似字符串的参数

标签 delphi dll parameters call procedure

我有一个带有表单的 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 在这种情况下不起作用。

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

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

我使用的是Delphi XE7。

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

啊,其他一切都很完美,程序调用了表单,它显示正确,但标题总是这样出现:

Weird Title

最佳答案

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

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

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

关于delphi - 调用 DLL 中的过程并传递类似字符串的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596378/

相关文章:

c# - C++ SDK 集成到 C# 程序中

jsp - Struts 2 从struts.xml INVISIBLY 传递参数给jsp

delphi - 有没有可以为 Delphi 2010 自动建议单位引用的工具?

Delphi 7,将 Form 设置为 BitBtn 的父级时出错

linux - 在 Linux 中以编程方式修改 Windows DLL 的字符串表

c++ - 如何将lambda表达式作为参数传递给可变参数模板类中的mermber函数

java - 如何从本地超链接调用Java程序?

SQL 通过 ADO 在 Delphi 中返回值

delphi - Delphi 中哪些变量被初始化?

visual-c++ - 在 Visual C++ 中进入 main() 函数之前如何管理加载 dll