我有一个带有表单的 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。
很抱歉,如果这个问题无关紧要或已经被问过,但我找不到它。如果已经有答案,请告诉我,我将删除此问题。
啊,其他一切都很完美,程序调用了表单,它显示正确,但标题总是这样出现:
最佳答案
您错过了调用约定。替换:
procedure CallEmployee(Title: PWideChar); external 'Employee.dll';
与
procedure CallEmployee(Title: PWideChar); stdcall; external 'Employee.dll';
关于delphi - 调用 DLL 中的过程并传递类似字符串的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34596378/