gcc是否可以链接到使用Visual C ++创建的库?如果是这样,这样做可能会产生任何冲突/问题吗?
答案 0 :(得分:3)
这里的答案中的一些评论略显过于笼统。
虽然没有,但在特定情况下提到的gcc二进制文件不会与VC ++库(AFAIK)链接。链接代码/库的实际方法是使用ABI标准的问题。
嵌入式领域越来越普遍的标准是EABI(或ARM ABI)标准(基于Itanium开发期间完成的工作http://www.codesourcery.com/cxx-abi/)。如果编译器符合EABI,则可以生成可以相互协作的可执行文件和库。多个工具链协同工作的一个例子是ARM的RVCT编译器,它生成可与GCC ARM ABI二进制文件一起使用的二进制文件。
(代码源代码链接目前已关闭但可以进行谷歌缓存)
答案 1 :(得分:1)
我猜不会。通常,c ++编译器具有完全不同的名称修改方法,这意味着链接器将无法找到正确的符号。顺便说一句,这是一件好事,因为标准允许C ++编译器具有更高级别的不兼容性而不仅仅是这会导致程序崩溃,死亡,吃小狗并在墙上涂抹油漆。
解决此问题的常用方案通常涉及COM或CORBA等语言无关技术。一个更简单的成圣方法是在C ++代码周围使用C“包装器”。
答案 2 :(得分:1)
这是不可能的。通常甚至不可能链接由同一编译器的不同版本生成的库。
答案 3 :(得分:1)
没有。简单明了: - )
答案 4 :(得分:1)
是的,如果您将其设为动态链接并使界面成为c风格。 lib.exe将生成与gcc工具链兼容的导入库。
这将解决您的链接问题。然而,这只是问题的开始。
更大的问题将是异常和内存分配等问题。
底线是保持一个符合ANSI C的简单界面,你应该没问题。疯狂的C ++落后的事实是可以的,只要它被包含。
哦,确保所有代码都是可重入的,否则你就有可能打开一个完整的can-o-worms。