C++ 使用gRPC C++;发布配置

C++ 使用gRPC C++;发布配置,c++,nuget,grpc,C++,Nuget,Grpc,我已经使用github上的官方说明从源代码编译了grpc库。 我使用cmake调用了MSVC v142构建工具(Visual Studio 2019),并生成了两个构建配置,一个用于发布,一个用于调试。 从构建工件和GRPC库的包含文件中,我创建了一个C++ NuGET包。该NuGet包既使用发行版,也使用调试构建工件(当然,还将它们放置在每个配置类型的指定文件夹中)。 我已经创建了一些“Hello World”应用程序,通过我构建的NuGet软件包使用Windows上的gRPC库。(这只是一个

我已经使用github上的官方说明从源代码编译了grpc库。 我使用cmake调用了MSVC v142构建工具(Visual Studio 2019),并生成了两个构建配置,一个用于发布,一个用于调试。 从构建工件和GRPC库的包含文件中,我创建了一个C++ NuGET包。该NuGet包既使用发行版,也使用调试构建工件(当然,还将它们放置在每个配置类型的指定文件夹中)。 我已经创建了一些“Hello World”应用程序,通过我构建的NuGet软件包使用Windows上的gRPC库。(这只是一个标准示例,可在gRPC官方示例中找到,未添加任何新内容)。 在“Hello World”应用程序的调试构建中,一切都很好——编译、链接、执行和调试,但当我在发布时切换到编译项目时,我有7个链接器错误与缺少函数定义有关

如何从源代码构建gRPC的说明取自此处:“”。 我搜索了gRPC源代码中那些函数的实现位置,发现它们在“gRPC++”项目中,该项目被编译为“gRPC++.lib”。我已经检查过该文件是否以正确的配置(版本)和体系结构(x64)包含在我的nuget包中。 我已经检查过是否将正确的配置和体系结构作为NuGet包的输入,甚至尝试直接链接这些二进制文件,而不使用我创建的NuGet包

这是使用版本x64生成时的链接器输出:

1>------ Build started: Project: HelloGrpc++NuGet, Configuration: Release x64 ------
1>HelloWorldServer.cc
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "class std::shared_ptr<class grpc::ServerCredentials> __cdecl grpc::InsecureServerCredentials(void)" (?InsecureServerCredentials@grpc@@YA?AV?$shared_ptr@VServerCredentials@grpc@@@std@@XZ)
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "public: __cdecl grpc::ServerBuilder::ServerBuilder(void)" (??0ServerBuilder@grpc@@QEAA@XZ)
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "public: virtual __cdecl grpc::ServerBuilder::~ServerBuilder(void)" (??1ServerBuilder@grpc@@UEAA@XZ)
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "public: virtual class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@UEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "public: class grpc::ServerBuilder & __cdecl grpc::ServerBuilder::RegisterService(class grpc::Service *)" (?RegisterService@ServerBuilder@grpc@@QEAAAEAV12@PEAVService@2@@Z)
1>HelloWorldServer.obj : error LNK2001: unresolved external symbol "public: class grpc::ServerBuilder & __cdecl grpc::ServerBuilder::AddListeningPort(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class std::shared_ptr<class grpc::ServerCredentials>,int *)" (?AddListeningPort@ServerBuilder@grpc@@QEAAAEAV12@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@V?$shared_ptr@VServerCredentials@grpc@@@4@PEAH@Z)
1>D:\Users\abiton\Desktop\grpcsandbox\HelloGrpc++NuGet\bin\x64\Release\HelloGrpc++NuGet.exe : fatal error LNK1120: 6 unresolved externals
1>Done building project "HelloGrpc++NuGet.vcxproj" -- FAILED.
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
以下是构建工件的相对路径:

grpc\.build\Release
grpc\.build\third_party\cares\cares\lib\Release
grpc\.build\third_party\protobuf\Release
grpc\.build\third_party\zlib\Release

这些是链接器输入:

address_sorting.lib
cares.lib
gpr.lib
grpc.lib
grpc++.lib
grpc++_unsecure.lib
libprotobuf.lib
zlib.lib

任何帮助都将不胜感激

尝试添加所有这些库:
grpc++\u不安全”、“grpc++\u反射”、“grpc++\u cronet”、“grpc++\u错误\u详细信息”、“grpc++”、“grpc\u不安全”、“grpc\u插件\u支持”、“grpc\u cronet”、“grpcpp\u通道”、“grpc”、“gpr”、“地址\u排序”
我也尝试过,但没有帮助。。。不管怎样,谢谢:)你试过使用网站上的说明吗?说明主要是用于构建grpc项目本身,而不是将grpc作为库使用。
grpc\.build\Release
grpc\.build\third_party\cares\cares\lib\Release
grpc\.build\third_party\protobuf\Release
grpc\.build\third_party\zlib\Release

address_sorting.lib
cares.lib
gpr.lib
grpc.lib
grpc++.lib
grpc++_unsecure.lib
libprotobuf.lib
zlib.lib