【问题标题】:Generate a .h file along with the DLL in Visual Studio 2012在 Visual Studio 2012 中生成 .h 文件和 DLL
【发布时间】:2014-12-03 14:38:55
【问题描述】:

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

那么我的选择是什么?:

  1. 我是否必须去从 .c 文件中获取所有 .h 文件并自己编译成一个文件?
  2. 有没有办法让 Visual Studio 在编译期间为 DLL 创建一个 .h?
  3. 还有什么我可以尝试将 DLL 导入 Delphi 以在其他应用程序中使用的方法吗?

提前感谢您提供的任何帮助。

【问题讨论】:

    标签: c delphi visual-studio-2012 dll


    【解决方案1】:

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

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

    只有当 C 代码有额外的注释时,它们才能很好地工作,而且它们很少这样做。比如这个应该怎么翻译:

    int foo(int, int*);
    

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

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

    【讨论】:

    • 每个 .c 文件都有 .h 文件,但是将它们编译在一起并使其适应 DLL 将是一项任务。难道没有办法将代码编译成 Delphi Import Component 向导可以理解的东西吗?
    • 我想我已经回答了这个问题。感觉就像你没有阅读答案。你想要一个头文件做什么? Delphi 打算用它做什么?你需要调用多少个函数?如果您在提出问题时已经开始工作,那么您现在肯定已经完成了。
    • 我可以继续手动开始,但是功能很多,大概有 100 个或更多。此外,还有很多复杂的数据类型也需要转换。
    • 这里没有快捷方式。
    猜你喜欢
    • 2016-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-21
    相关资源
    最近更新 更多