为了账号安全,请及时绑定邮箱和手机立即绑定

Qt:从 Golang 导出的共享 C 库

Qt:从 Golang 导出的共享 C 库

Go
心有法竹 2022-10-17 16:05:56
我正在使用 Golang 导出可在 C 中使用的共享库进行一些测试,并得出以下结论:calcLib.go:package mainimport "C"//export Calculatorfunc Calculator(x int, y int) int {    return x+y;}func main() {    // Need a main function to make CGO compile package as C shared library}这个简单的库包含对Calculator数字求和的。现在我有一个小的 C 程序将使用它:计算.c:#include "calcLib.h"int main() {         printf("Hello World from C!\n");         printf("Calculator() -> %d\n", Calculator(10,5));    return 0;}现在我可以编译库和 C 程序:C:\Users\TCB13\Desktop> go build -buildmode c-shared -o calcLib.a calcLib.goC:\Users\TCB13\Desktop> gcc -o calc.exe calc.c calcLib.a这将输出一个按预期工作的可执行文件:> .\calc.exeHello World from C!Calculator() -> 15现在,如何在 Qt 项目中使用这个共享库?我尝试将以下内容添加到我的 .pro 文件中:LIBS += -L"C:\Users\TCB13\shared\calcLib.a"INCLUDEPATH += "C:\Users\TCB13\shared"  # Shared folder includes the calcLib.h file然后在我的 main.cpp 中:#include "testapp.h"#include <QApplication>#include <QtDebug>#include "calcLib.h"int main(int argc, char *argv[]){    QApplication a(argc, argv);    TestApp w;    w.show();    qDebug() << Calculator(10,5);    return a.exec();}编译它会导致以下错误:如何在 Qt 应用程序中正确制作/导出/使用这个库?这是我的 calcLib.h 文件供参考:https ://pastebin.com/k3sKYiti谢谢你。
查看完整描述

1 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

在 qmake 项目文件LIBS中,变量使用与 gcc 链接器相同的 cli 键-L来指定库和-l库名称的搜索路径(不带lib前缀和不带.a.dll.so后缀,我相信带前缀的版本也应该有效)。

所以应该是LIBS += -L$${PWD}\shared -lCalc

qmake 变量参考


查看完整回答
反对 回复 2022-10-17
  • 1 回答
  • 0 关注
  • 196 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号