从Delphi调用C++类库

4

是否能在Delphi 2007中调用C++类库?如何实现?我知道如何调用dll函数,但是如何处理类呢?


就此而言,由于没有关于类在内存中必须如何布局的标准,因此即使是相同的源代码,在编译后在内存中的布局也可能存在差异。因此,通常甚至不可能使用来自另一个编译器或甚至同一品牌但不同版本的编译器的代码访问公开的C ++类。从DLL直接公开类是不应该做的事情,除非仅供私人使用。 - Rudy Velthuis
2个回答

8

有几种方法可以实现这一点,但是你不能直接使用C++类。两种有效的方法需要一些工作,并在此处详细描述:

在Delphi中使用C++对象(http://rvelthuis.de/articles/articles-cppobjs.html)

更新

好的,我被要求进行更新。该文章描述了两种方法:

  • 编写并公开以C++对象为参数(作为第一个参数)的C函数(在Delphi中,C++类型只是作为不透明类型传递),通过调用具有正确参数的类方法来提供类所提供的功能。可以从Delphi调用C函数。
  • 为类编写COM包装器。该文章描述了如何在C++中完成此操作。

详细信息可以在文章中找到。


1
我们通常更喜欢答案包含至少一些细节。你的答案只是一个指向外部页面的链接。你应该至少总结一下这个外部链接的内容。如此描述:http://meta.stackexchange.com/questions/94022/how-can-i-link-to-an-external-resource-in-a-community-friendly-way - David Heffernan
就我所知,这与链接到提供答案的另一个SO问题或引用描述浮点问题的离线文章有何不同? - Rudy Velthuis
@vico:如果您能够接受这里的一个答案,那就太好了。 - Rudy Velthuis

2

你不能直接在Delphi中使用C++类。你需要以其他互操作友好的方式进行包装。例如:

  1. 用C风格函数包装C++类,以公开其功能。
  2. 公开提供功能的COM对象。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接