[英]QT qmake GRPC implementation
我想在我的 qt 項目上實現 GRPC,但首先我嘗試運行一個 grpc 示例,但出現未定義的引用錯誤。
主.cpp:
#include <helloworld.grpc.pb.h>
#include <grpc/grpc.h>
#include <grpcpp/server_builder.h>
#include <iostream>
class GreeterService final : public helloworld::Greeter::Service {
public:
virtual ::grpc::Status SayHello(::grpc::ServerContext* context, const ::helloworld::HelloRequest* request, ::helloworld::HelloReply* response) {
std::cout << "Server: message for \"" << request->name() << "\"." << std::endl;
response->set_message("Hi " + request->name());
return grpc::Status::OK;
}
};
int main(int argc, char* argv[]) {
grpc::ServerBuilder builder;
builder.AddListeningPort("0.0.0.0:50051", grpc::InsecureServerCredentials());
GreeterService my_service;
builder.RegisterService(&my_service);
std::unique_ptr<grpc::Server> server(builder.BuildAndStart());
server->Wait();
return 0;
}
。輪廓:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
CONFIG += c++17
# You can make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # disables all the APIs deprecated before Qt 6.0.0
SOURCES += \
main.cpp \
INCLUDEPATH += /home/grpc/include \
/home/grpc/
DEPENDPATH += /home/grpc//include \
/home/grpc/
QMAKE_LFLAGS += -Wl,-rpath,"path_to_libgrpc++.so.1.45"
LIBS += -L/usr/local/lib `pkg-config --libs protobuf grpc++` -L/usr/lib -L/usr/lib64 -L/usr/lib/x86_64-linux-gnu
# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target
錯誤:
undefined reference to `helloworld::Greeter::Service::Service()'
我不知道為什么會出現此錯誤,compailer 可以看到 headers main 也可以看到。 但我認為 my.pro 文件中缺少一些東西
您看到的錯誤可能是由於您沒有正確鏈接到 gRPC 庫。
要解決此問題,您需要確保鏈接到項目文件 (.pro) 中的 gRPC 庫。 您可以通過將以下行添加到您的 .pro 文件來執行此操作:
LIBS += -lgrpc++
這將告訴鏈接器鏈接到 gRPC C++ 庫,其中包括您嘗試使用的 helloworld::Greeter::Service 類。
如果庫不在標准庫搜索路徑中,您可能還需要指定庫的路徑。 您可以通過將以下行添加到您的 .pro 文件來執行此操作:
LIBS += -L/path/to/libgrpc++.so
將 /path/to/libgrpc++.so 替換為系統上 libgrpc++.so 庫的實際路徑。
將這些行添加到 .pro 文件后,嘗試重建項目。 這應該可以解決未定義的引用錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.