从父级调用应用程序创建的 Delphi DLL
我有一个应用程序,我调用一个 DLL 函数来创建并返回一个表单。当我尝试将此新表单作为应用程序中主表单的父级时,出现了一大堆错误。
这是一个常见的错误/问题,还是在这种情况下养育子女没有问题。
据我所知,在 DLL 调用中创建的表单不属于该应用程序。有没有办法让新创建的表单属于应用程序。
谢谢你, 蒂姆
I have an application that I make a call to a DLL function that creates and returns a form. I get a whole bunch of errors when I try to parent this new form to the main form in the application.
Is that a common error / problem or is there not an issue with parenting in this case.
And as far as I have learned a form created in a DLL call doesn't belong to the application. Is there a way to make the newly created form belong to the application.
Thank you,
Tim
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
使用相同版本的delphi编译器和相同的运行时包编译您的dll和exe。
同样在 dll 中,不要在表单创建函数上使用任何调用约定,例如 stdcall 或 cdecl。
它会像魅力一样发挥作用。
compile your dll and exe with the same version of delphi compiler with the same runtime packages.
also in dll do not use any calling convension like stdcall or cdecl on your form-creating-function.
it will work like a charm.
不要在 DLL 内使用 VCL。这样你就会遇到各种各样的问题。如果您绝对需要拥有创建 VCL 组件或其他 GUI 部分的动态包,请使用 BPL 等。以下是两者的简短摘要:
还有其他方法。现在的主要问题是为什么要在 DLL 中创建表单,这真的需要吗?
Do not use VCL inside DLLs. You will encounter all kind of problems this way. If you absolutely need to have dynamic packages that create VCL components or other GUI parts, use BPLs for instance. Here is a short sumary of both:
There are other aproaches. Now the main question is why do you create a form inside DLL and is that really needed?
您的 dll 和 exe 必须在同一版本的 RAD Studio 中编译,并且两者都必须使用运行时包。
Your dll and exe must be compiled in same version of RAD Studio and both must use runtime packages.