Это снова я. Я вернулся с совершенно новым проектом и новой проблемой.
Я пытаюсь реализовать что-то для Growl. Либо с использованием статической или общей библиотеки (оба предоставляются). Я включил необходимый заголовок и дал ссылку на библиотеку. (2 способа на самом деле, один раз через свойства проекта, а другой через утверждение прагмы). Тем не менее, я все еще получаю следующие ошибки компоновщика:
error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Growl::Growl(enum Growl_Protocol,char const * const,char const * const,char const * * const,int)" (__imp_??0Growl@@QAE@W4Growl_Protocol@@QBD1QAPBDH@Z)
error LNK2001: unresolved external symbol "__declspec(dllimport) public: __thiscall Growl::~Growl(void)" (__imp_??1Growl@@QAE@XZ)
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
Некоторая дополнительная информация: у меня есть набор символов Project Propeties для использования многобайтового набора символов, я предполагаю, что это ни на что не должно влиять. Это также консольное приложение Win32.
Куда я иду не так?
Обновление:
Нашел это через гугл:
http://groups.google.com/group/growl-for-windows/browse_thread/thread/6c48a62454d062f1
Следовал инструкциям:
Добавлен libgrowlstatic.lib (наряду с libgrowlstatic ++. Lib)
Добавлены определения препроцессора, 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+ просмотров и никаких ответов?
Клянусь, я не ленивый. Я посмотрел один из ответов о библиотеках, но мне не повезло. Ничто не объясняет, почему это так. Пожалуйста, помогите!