这是我再次。我回来了一个全新的项目和一个全新的问题。 我正在努力为Growl实现一些东西。使用静态或共享库(均提供)。我包括必要的标题并链接到图书馆。 (实际上有两种方法,一种通过项目属性,另一种通过杂注语句)。然而,IM仍在接收下面的链接器错误:图书馆链接器错误让我生气
error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Growl::Growl(enum Growl_Protocol,char const * const,char const * const,char const * * const,int)" ([email protected]@[email protected][email protected]@[email protected])
error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Growl::~Growl(void)" ([email protected]@[email protected])
fatal error LNK1120: 2 unresolved externals
的是导致这些链接器错误代码的行是这样的线:
const char *n[2] = { "username" , "password" };
Growl *growl = new Growl(GROWL_TCP,NULL, "Appname", (const char **const)n,2);
头文件被包含在文件的顶部
#include "..\\..\\..\\libs\\Growl\\growl++.hpp"
#pragma comment(lib, "..\\..\\..\\libs\\Growl\\libgrowl-static++.lib")
头源可以在这里找到: https://github.com/psinnott/gntp-send/blob/master/headers/growl%2B%2B.hpp
,我用下面的连接线我取回预先生成的二进制文件从以下页面: https://github.com/psinnott/gntp-send/wiki/Windows
一些额外的信息:我有我的项目化子性质字符集使用多字节字符集,即时通讯的假设下,这应该不会影响任何东西。这也是一个Win32控制台应用程序。
我哪里错了?
更新:
通过谷歌发现这一点: http://groups.google.com/group/growl-for-windows/browse_thread/thread/6c48a62454d062f1
跟着指示:
添加了libgrowlstatic.lib(并排libgrowlstatiC++ IIb)的
添加预处理器定义,GROWL_STATIC和GROWL_CPP_STATIC
有很多错误,包括:
LINK : warning LNK4098: defaultlib 'MSVCRTD' conflicts with use of other libs; use /NODEFAULTLIB:library
LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library
fatal error LNK1169: one or more multiply defined symbols found
所以我增加了以下线项目属性,链接器,命令行:
/NODEFAULTLIB:MSVCRTD /NODEFAULTLIB:LIBCMT
现在即时得到很多更多的错误,包括以下一些:
libgrowl-static.lib(tcp.obj) : error LNK2019: unresolved external symbol _atoi referenced in function _growl_tcp_parse_hostname
libgrowl-static.lib(tcp.obj) : error LNK2019: unresolved external symbol _strchr referenced in function _growl_tcp_parse_hostname
libgrowl-static.lib(growl-static.obj) : error LNK2019: unresolved external symbol _fseek referenced in function _growl_tcp_register
libgrowl-static.lib(growl-static.obj) : error LNK2019: unresolved external symbol _fopen referenced in function _growl_tcp_register
libgrowl-static.lib(growl-static.obj) : error LNK2019: unresolved external symbol _strcpy referenced in function _growl_udp_notify
去过在这几个小时,似乎无法弄清楚。 10多个意见,没有回复? 我发誓我不懒惰。我研究了一些关于图书馆的答案,但没有多少运气。没有任何解释为什么这是行事的方式。请帮忙!
欢迎回来,李维斯,我们都非常想念你:-) – paxdiablo 2012-03-13 03:53:48
嘿嘿。谢谢Pax。 =) – 2012-03-13 03:57:56
链接器正在寻找导出的函数,但您似乎提供了一个静态库,而不是一个导入库。 – 2012-03-13 03:59:16