使用C应用程序中的Qt库

时间:2011-06-30 10:27:54

标签: c++ c qt

有没有办法编写一个qt库,以便我可以在C应用程序中使用它(静态链接很好)? 我的C代码很大,很旧,如果没有过多的工作量,就不会转换为C ++。我说这个,因为其他类似的问题似乎回答“只是让你的C代码成为Qt应用程序”。那不是一个选择。 我希望我可以编写一个qt库,并以允许从C调用它的方式构建它(QLibrary文档中提到的内容)。

  

该符号必须导出为C.   来自图书馆的功能   resolve()工作。这意味着   函数必须包含在extern中   如果编译库,则“C”阻塞   使用C ++编译器。在Windows上,这个   还需要使用dllexport   宏;请参阅resolve()了解详细信息   如何做到这一点。

有人可以确认/否认我可以这样做,并让我知道我可以在库中放多少“qt”? 我不需要GUI但想使用一些SQL处理。

干杯

麦克

1 个答案:

答案 0 :(得分:3)

您可以根据需要在库中放置尽可能多的Qt,包括完整的UI功能。问题在于,由于您希望从C代码访问它,您必须提供自己的访问功能,并且您的C功能将受限于您提供的任何访问级别。

您甚至可以在C和C ++之间传递Qt对象指针,但是您需要将它们转换为C可以编译的内容 - void *或者最好是您自己的新类型定义(例如C_QString * })。对于C代码,这些指针将是不透明的,但它们仍然有效。