【问题标题】:Using Linux C code and header files to compile a Windows DLL使用 Linux C 代码和头文件编译 Windows DLL
【发布时间】:2023-03-22 22:40:02
【问题描述】:

我想知道通常是否可以使用 Visual C++ 2010 从 C 代码和我在 Linux 发行版中找到的头文件创建 C++ DLL。

理论上,如果我从 Linux 中取出一段 C 代码(包含不同的头文件),在 Linux 文件系统中找到链接项目所需的所有头文件,我是否能够成功编译使用 Visual C++ 2010 在 Windows 中进行项目?

是否有一些示例或教程?

编译 DLL 后,我想在 C# 应用程序中使用它,我将在 Linux 下使用 Mono 运行该应用程序。

【问题讨论】:

  • 如果源码中也包含了整个Linux内核,那么……那么还是不行,因为MSVC不遵守标准,所以portable C不能移植到Windows。
  • @H2CO3:即使 MSVC 尊重标准,仅将内核编译到您的应用程序中也不会使其工作。当然,除非您制作系统替换驱动程序:)
  • @Dani 是的,当然我的意思是如果必要的部分(包括系统服务、系统调用等)可以与程序一起编译,理论上可以工作。但是请看,这远非现实。

标签: c++ c linux dll mono


【解决方案1】:

不,仅使用头文件可能无法实现。
问题是一些函数(通常是大多数)是在目标文件和共享库中定义的,而不是在头文件中定义的,因此没有目标文件和共享库就无法编译它们。
对象文件和共享库不是跨平台的,因此您无法复制它们。
唯一的解决方案是使用像Cygwin 这样的系统,它具有为 Windows 编译的 linux 头文件和目标文件/dll。

【讨论】:

    猜你喜欢
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2021-07-06
    • 1970-01-01
    • 2015-06-14
    • 1970-01-01
    相关资源
    最近更新 更多