我正在使用 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
- 1 回答
- 0 关注
- 196 浏览
添加回答
举报
0/150
提交
取消
