首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有工具可以把Visual Studio对象文件转换成GCC格式?

有没有工具可以把Visual Studio对象文件转换成GCC格式?
EN

Stack Overflow用户
提问于 2013-03-29 06:41:43
回答 2查看 1.3K关注 0票数 3

我正在使用Interix在Windows上构建一个C++应用程序,需要链接三个对象文件来提供第三方许可模块的功能。第三方提供了由Visual Studio构建的对象文件。有没有办法把这些文件转换成和GCC一起使用?例如,也许如果我将名称mangling从Visual Studio样式更改为GCC样式就足够了,或者这两种对象文件格式之间还有其他区别吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-04-02 14:40:38

Windows没有标准化的C++ ABI (应用程序二进制接口)。不过,它确实有一个C ABI。这是Kernel32.DLL使用的ABI,所以所有的Windows编程环境都能理解它。许多人也可以生成这样的DLL。

在这种情况下,C++ .obj文件必须由Visual Studio链接器链接。该链接器绝对能够创建DLL文件。您必须编写extern "C"函数来包装许可功能。添加__declspec(dllexport)以指示这些函数是从DLL导出的(在Windows上,默认情况下,函数是DLL的私有函数)。

在标头中,将这些函数声明为__declspec(dllimport)。GCC也明白这一点。然后链接到新生成的DLL,它将解析dllimport'ed符号。

票数 4
EN

Stack Overflow用户

发布于 2018-12-29 13:58:32

除了VC++和GCC/G++之间可能存在的符号差异之外,由于Windows API问题,您正在尝试做的事情可能是不可能的。

从Interix构建的程序只能与Interix一起工作,并且由于Interix是与Windows子系统(或者说Win32子系统)并行的独立子系统,因此您不能调用任何Windows API (例如.从kernel32.dll)。

如果许可目标文件包含任何Windows API调用,则无法进行链接。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15693427

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档