2014-12-03 128 views
0

我有一些C代码需要在Delphi应用程序中使用。使用cmake,我可以在Visual Studio 2012中生成一个将其编译成DLL的解决方案。对于所有的功能,用Delphi编写所有的导入单元需要花费一天又一天的时间。有一个工具可以用来将DLL .h文件转换为pascal导入单元,但Visual Studio不会为DLL提供.h文件。在Visual Studio 2012中生成一个.h文件以及DLL

所以我有哪些选择?:

  1. 我一定要他们走,并从.c文件得到所有的.h文件并编译成一个文件自己?
  2. 有没有办法让Visual Studio在编译期间为DLL生成一个.h文件?
  3. 还有什么我可以尝试将DLL转换为Delphi在其他应用程序中使用?

在此先感谢您的帮助或许能提供帮助。

回答

1

通常情况下,C代码的开发人员也会生成一个头文件。你知道为什么没有一个?或者你也许还没有找到它。

你不会找到一个好的工具来为你制作头文件。无论如何,你不需要头文件。你想要一个Pascal导入文件。即使你有一个头文件,也没有好的工具从那里转换成Pascal导入文件。有些工具可以尝试这项工作,但我的经验是他们工作不好。

如果C代码有额外的注释,它们只能很好地工作,而且它们很少这样做。例如,如何把这个翻译:

int foo(int, int*); 

是在int*参数标量或数组?如果前者,参数是可选的? NULL可以通过吗?如果是后者,阵列有多长?基本的头文件不提供完整的规范。

我想说最好的行动方式是手动编写Pascal导入代码。如果有很多重复,那么你可以编写自己的小工具来帮助。无论如何,我总是这样做。

+0

每个.c文件都有.h文件,但将它们编译在一起并使它们适应DLL的工作将成为一项使命。没有办法将代码编译为Delphi导入组件向导可以理解的东西吗? – Erik 2014-12-04 07:40:21

+0

我想我已经回答了。感觉就像你没有读到答案。你想要一个头文件? Delphi会用它来做什么?你需要打几个功能?当你问这个问题时,如果你开始工作,你现在肯定会完成。 – 2014-12-04 08:27:19

+0

我可以继续前进,并开始全部手工完成,但有很多功能,大概在100或更多。此外,还有许多复杂的数据类型也需要转换。 – Erik 2014-12-05 09:42:33