有没有办法编写一个qt库,以便我可以在C应用程序中使用它(静态链接很好)? 我的C代码很大,很旧,如果没有过多的工作量,就不会转换为C ++。我说这个,因为其他类似的问题似乎回答“只是让你的C代码成为Qt应用程序”。那不是一个选择。 我希望我可以编写一个qt库,并以允许从C调用它的方式构建它(QLibrary文档中提到的内容)。
该符号必须导出为C. 来自图书馆的功能 resolve()工作。这意味着 函数必须包含在extern中 如果编译库,则“C”阻塞 使用C ++编译器。在Windows上,这个 还需要使用dllexport 宏;请参阅resolve()了解详细信息 如何做到这一点。
有人可以确认/否认我可以这样做,并让我知道我可以在库中放多少“qt”? 我不需要GUI但想使用一些SQL处理。
干杯
麦克
答案 0 :(得分:3)
您可以根据需要在库中放置尽可能多的Qt,包括完整的UI功能。问题在于,由于您希望从C代码访问它,您必须提供自己的访问功能,并且您的C功能将受限于您提供的任何访问级别。
您甚至可以在C和C ++之间传递Qt对象指针,但是您需要将它们转换为C可以编译的内容 - void *
或者最好是您自己的新类型定义(例如C_QString *
})。对于C代码,这些指针将是不透明的,但它们仍然有效。