Windows Linker Errors after release-0_15_1

297 views
Skip to first unread message

John Coffey

unread,
Jul 11, 2016, 3:47:33 PM7/11/16
to grpc.io
I'm getting the following linker errors recently (master branch) on windows, I do not get these in release-0_15_1.  I wonder if anyone could shed light on what the source of this error might be. I suspect that it has something to do with the libraries that I am linking with post  release-0_15_1 (I did not change these but I did notice that a new grpc++reflection.lib was added.

I am linking to the following grpc/protocol buffer libraries

libprotobufd.lib
gpr.lib
grpc.lib
grpc_unsecure.lib
grpc++.lib
grpc++_unsecure.lib
z.lib

Any ideas

John

These are the linker errors on in my client

1>  LINK : C:\main\dlmu\cacli-0339.1\win32\cacli\x64\Debug\cacli.exe not found or not built by the last incremental link; performing full link
1>grpc++_unsecure.lib(insecure_credentials.obj) : error LNK2019: unresolved external symbol "public: __cdecl grpc::ChannelCredentials::ChannelCredentials(void)" (??0ChannelCredentials@grpc@@QEAA@XZ) referenced in function "public: __cdecl grpc::`anonymous namespace'::InsecureChannelCredentialsImpl::InsecureChannelCredentialsImpl(void)" (??0InsecureChannelCredentialsImpl@?A0x568c5687@grpc@@QEAA@XZ)
1>grpc++_unsecure.lib(insecure_credentials.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::ChannelCredentials::~ChannelCredentials(void)" (??1ChannelCredentials@grpc@@UEAA@XZ) referenced in function "public: virtual __cdecl grpc::`anonymous namespace'::InsecureChannelCredentialsImpl::~InsecureChannelCredentialsImpl(void)" (??1InsecureChannelCredentialsImpl@?A0x568c5687@grpc@@UEAA@XZ)
1>grpc++_unsecure.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::Channel::~Channel(void)" (??1Channel@grpc@@UEAA@XZ) referenced in function "public: virtual void * __cdecl grpc::Channel::`scalar deleting destructor'(unsigned int)" (??_GChannel@grpc@@UEAAPEAXI@Z)
1>grpc++_unsecure.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "private: __cdecl grpc::Channel::Channel(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (??0Channel@grpc@@AEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAUgrpc_channel@@@Z) referenced in function "class std::shared_ptr<class grpc::Channel> __cdecl grpc::CreateChannelInternal(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (?CreateChannelInternal@grpc@@YA?AV?$shared_ptr@VChannel@grpc@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@PEAUgrpc_channel@@@Z)
1>C:\main\dlmu\cacli-0339.1\win32\cacli\x64\Debug\cacli.exe : fatal error LNK1120: 4 unresolved externals



These are the linker errors on in my server

1>------ Build started: Project: cadaemon, Configuration: Debug x64 ------
1>main.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
1>ca.lib(CADaemon.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::Server::~Server(void)" (??1Server@grpc@@UEAA@XZ) referenced in function "public: virtual void * __cdecl grpc::Server::`scalar deleting destructor'(unsigned int)" (??_GServer@grpc@@UEAAPEAXI@Z)
1>grpc++.lib(server_builder.obj) : error LNK2001: unresolved external symbol "public: virtual __cdecl grpc::Server::~Server(void)" (??1Server@grpc@@UEAA@XZ)
1>ca.lib(CADaemon.obj) : error LNK2019: unresolved external symbol "public: virtual void __cdecl grpc::Server::Wait(void)" (?Wait@Server@grpc@@UEAAXXZ) referenced in function "private: void __cdecl CADaemon::grpcService(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?grpcService@CADaemon@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>grpc++.lib(insecure_credentials.obj) : error LNK2019: unresolved external symbol "public: __cdecl grpc::ChannelCredentials::ChannelCredentials(void)" (??0ChannelCredentials@grpc@@QEAA@XZ) referenced in function "public: __cdecl grpc::`anonymous namespace'::InsecureChannelCredentialsImpl::InsecureChannelCredentialsImpl(void)" (??0InsecureChannelCredentialsImpl@?A0x568c5687@grpc@@QEAA@XZ)
1>grpc++.lib(insecure_credentials.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::ChannelCredentials::~ChannelCredentials(void)" (??1ChannelCredentials@grpc@@UEAA@XZ) referenced in function "public: virtual __cdecl grpc::`anonymous namespace'::InsecureChannelCredentialsImpl::~InsecureChannelCredentialsImpl(void)" (??1InsecureChannelCredentialsImpl@?A0x568c5687@grpc@@UEAA@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: __cdecl grpc::Server::Server(class grpc::ThreadPoolInterface *,bool,int,class grpc::ChannelArguments *)" (??0Server@grpc@@AEAA@PEAVThreadPoolInterface@1@_NHPEAVChannelArguments@1@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual bool __cdecl grpc::Server::RegisterService(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *,class grpc::Service *)" (?RegisterService@Server@grpc@@EEAA_NPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVService@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual void __cdecl grpc::Server::RegisterAsyncGenericService(class grpc::AsyncGenericService *)" (?RegisterAsyncGenericService@Server@grpc@@EEAAXPEAVAsyncGenericService@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual int __cdecl grpc::Server::AddListeningPort(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class grpc::ServerCredentials *)" (?AddListeningPort@Server@grpc@@EEAAHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVServerCredentials@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual bool __cdecl grpc::Server::Start(class grpc::ServerCompletionQueue * *,unsigned __int64)" (?Start@Server@grpc@@EEAA_NPEAPEAVServerCompletionQueue@2@_K@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: class grpc::ServerInitializer * __cdecl grpc::Server::initializer(void)" (?initializer@Server@grpc@@AEAAPEAVServerInitializer@2@XZ) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::Channel::~Channel(void)" (??1Channel@grpc@@UEAA@XZ) referenced in function "public: virtual void * __cdecl grpc::Channel::`scalar deleting destructor'(unsigned int)" (??_GChannel@grpc@@UEAAPEAXI@Z)
1>grpc++.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "private: __cdecl grpc::Channel::Channel(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (??0Channel@grpc@@AEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAUgrpc_channel@@@Z) referenced in function "class std::shared_ptr<class grpc::Channel> __cdecl grpc::CreateChannelInternal(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (?CreateChannelInternal@grpc@@YA?AV?$shared_ptr@VChannel@grpc@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@PEAUgrpc_channel@@@Z)
1>C:\main\dlmu\cadaemon-0339.1\win32\cadaemon\x64\Debug\cadaemon.exe : fatal error LNK1120: 12 unresolved externals
========== Build: 0 succeeded, 1 failed, 3 up-to-date, 0 skipped ==========

Nicolas Noble

unread,
Jul 12, 2016, 7:02:45 PM7/12/16
to grpc.io
Not really - these are fairly standard symbols, and shouldn't go missing. I can't help but notice that you are building from an existing build though. Did you, well, try cleaning all and rebuilding all ? If their signature changed between the builds, and your VS didn't pick up the change and rebuild the necessary parts, that'd do it.

John Coffey

unread,
Aug 21, 2016, 3:04:27 PM8/21/16
to grpc.io
Nicolas, that was indeed the case when I switched from the 0_15_1 to the v1.0.0 branch.  However today I changed to the 1.0.0 tag and the problems are cropping up once more and this time despite clean builds I cannot seem to resolve the linker issues.  I did a build from scratch and I get the following missing symbol linker errors.  I would have thought that grpc++.lib was the guilty library bit that does not look to be the case.  Perhaps you can spot the problem.

John

1>main.obj : warning LNK4075: ignoring '/EDITANDCONTINUE' due to '/OPT:LBR' specification
1>ca.lib(CADaemon.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::Server::~Server(void)" (??1Server@grpc@@UEAA@XZ) referenced in function "public: virtual void * __cdecl grpc::Server::`scalar deleting destructor'(unsigned int)" (??_GServer@grpc@@UEAAPEAXI@Z)
1>grpc++.lib(server_builder.obj) : error LNK2001: unresolved external symbol "public: virtual __cdecl grpc::Server::~Server(void)" (??1Server@grpc@@UEAA@XZ)
1>ca.lib(CADaemon.obj) : error LNK2019: unresolved external symbol "public: virtual void __cdecl grpc::Server::Wait(void)" (?Wait@Server@grpc@@UEAAXXZ) referenced in function "private: void __cdecl CADaemon::grpcService(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?grpcService@CADaemon@@AEAAXAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: __cdecl grpc::Server::Server(class grpc::ThreadPoolInterface *,bool,int,class grpc::ChannelArguments *)" (??0Server@grpc@@AEAA@PEAVThreadPoolInterface@1@_NHPEAVChannelArguments@1@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual bool __cdecl grpc::Server::RegisterService(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const *,class grpc::Service *)" (?RegisterService@Server@grpc@@EEAA_NPEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVService@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual void __cdecl grpc::Server::RegisterAsyncGenericService(class grpc::AsyncGenericService *)" (?RegisterAsyncGenericService@Server@grpc@@EEAAXPEAVAsyncGenericService@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual int __cdecl grpc::Server::AddListeningPort(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,class grpc::ServerCredentials *)" (?AddListeningPort@Server@grpc@@EEAAHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAVServerCredentials@2@@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: virtual bool __cdecl grpc::Server::Start(class grpc::ServerCompletionQueue * *,unsigned __int64)" (?Start@Server@grpc@@EEAA_NPEAPEAVServerCompletionQueue@2@_K@Z) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(server_builder.obj) : error LNK2019: unresolved external symbol "private: class grpc::ServerInitializer * __cdecl grpc::Server::initializer(void)" (?initializer@Server@grpc@@AEAAPEAVServerInitializer@2@XZ) referenced in function "public: class std::unique_ptr<class grpc::Server,struct std::default_delete<class grpc::Server> > __cdecl grpc::ServerBuilder::BuildAndStart(void)" (?BuildAndStart@ServerBuilder@grpc@@QEAA?AV?$unique_ptr@VServer@grpc@@U?$default_delete@VServer@grpc@@@std@@@std@@XZ)
1>grpc++.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "public: virtual __cdecl grpc::Channel::~Channel(void)" (??1Channel@grpc@@UEAA@XZ) referenced in function "public: virtual void * __cdecl grpc::Channel::`scalar deleting destructor'(unsigned int)" (??_GChannel@grpc@@UEAAPEAXI@Z)
1>grpc++.lib(create_channel_internal.obj) : error LNK2019: unresolved external symbol "private: __cdecl grpc::Channel::Channel(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (??0Channel@grpc@@AEAA@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@PEAUgrpc_channel@@@Z) referenced in function "class std::shared_ptr<class grpc::Channel> __cdecl grpc::CreateChannelInternal(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &,struct grpc_channel *)" (?CreateChannelInternal@grpc@@YA?AV?$shared_ptr@VChannel@grpc@@@std@@AEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@3@PEAUgrpc_channel@@@Z)
1>C:\Users\johnc\main\dlmu\cadaemon-0339.1\win32\cadaemon\x64\Debug\cadaemon.exe : fatal error LNK1120: 10 unresolved externals

John Coffey

unread,
Aug 21, 2016, 11:19:30 PM8/21/16
to grpc.io
Nicolas, I was able to work around the problem by simply switching to the master branch, looks like something is a bit off with the 1.0.0 tag release

John

sta...@gmail.com

unread,
Aug 25, 2016, 7:01:00 AM8/25/16
to grpc.io
Hi there,

I have the same problem. Link C++ library built from 1.0.0 tag by Visual Studio project, show unresolved reference error to Channel and Server class

After some research, I believe the problem is from conflicted name. Project grpc++ have both channel.c and channel.cc source file (in different directory), both compiled to channel.lib (in the same directory). so one library overwrite another.

Other conflicted names are byte_buffer.c/ byte_buffer.cc, completion_queue.c/ completion_queue.cc, server.c/ server.cc

John Coffey於 2016年8月22日星期一 UTC+8上午11時19分30秒寫道:

Nicolas Noble

unread,
Aug 26, 2016, 2:09:14 AM8/26/16
to sta...@gmail.com, grpc.io
If that's the case, this solves it: https://github.com/grpc/grpc/pull/7828

--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+unsubscribe@googlegroups.com.
To post to this group, send email to grp...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/grpc-io/e3c3b486-4899-44aa-8a16-7d2ca28cc936%40googlegroups.com.

For more options, visit https://groups.google.com/d/optout.

John Coffey

unread,
Aug 26, 2016, 9:40:25 PM8/26/16
to grpc.io, sta...@gmail.com
Thanks, I notice that shortly after I switched over to the master build and the problem went away, however its back again on the master build.  Did you come up with a workaround - I build with Visual Studio 2015

John

Nicolas Noble

unread,
Aug 26, 2016, 9:56:19 PM8/26/16
to John Coffey, grpc.io, sta...@gmail.com

The master branch doesn't have the fix yet. We will upmerge shortly. I would advise against using master anyway, unless you want to alpha test some of the new features there.


--
You received this message because you are subscribed to the Google Groups "grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email to grpc-io+u...@googlegroups.com.

To post to this group, send email to grp...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages