使用 Linux C 代码和头文件编译 Windows DLL
Posted
技术标签:
【中文标题】使用 Linux C 代码和头文件编译 Windows DLL【英文标题】:Using Linux C code and header files to compile a Windows DLL 【发布时间】:2012-11-03 16:43:27 【问题描述】:我想知道通常是否可以使用 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 是的,当然我的意思是如果必要的部分(包括系统服务、系统调用等)可以与程序一起编译,理论上可以工作。但是请看,这远非现实。 【参考方案1】:不,仅使用头文件可能无法实现。 问题是一些函数(通常是大多数)是在目标文件和共享库中定义的,而不是在头文件中定义的,因此没有目标文件和共享库就无法编译它们。 对象文件和共享库不是跨平台的,因此您无法复制它们。 唯一的解决方案是使用像Cygwin 这样的系统,它具有为 Windows 编译的 linux 头文件和目标文件/dll。
【讨论】:
以上是关于使用 Linux C 代码和头文件编译 Windows DLL的主要内容,如果未能解决你的问题,请参考以下文章