我最近收到了一个闭源SDK,它包含一个C头文件(.h
),一个库文件(.lib
)和一个动态库(.dll
)。它们是使用Microsoft的Visual C ++编译的。但是,我试图使用MinGW编写我的代码(GCC移植到Windows,对于任何不熟悉该项目的人)。看来ld无法链接到.lib
文件。我想知道是否有可能在VS编译的代码和我正在编写的GCC代码之间编写兼容性包装。
答案 0 :(得分:1)
ABI不匹配还是只是不想链接对象格式?如果它只是一个链接问题,您可以提取您关心的函数,反汇编它们,然后将它们重新组合成链接器可以处理的对象。更简单,也许objcopy(1)
可以说两种格式并可以帮助你吗?
如果你确实遇到了ABI问题,你可以这样做,但也可以添加一个垫片层来打击ABI,这样函数调用就可以了。该层的复杂程度和编写难度将取决于您尝试使用的函数的接口。
不要因评论而气馁 - 这是软件,所以任何都是可能的。