Mam projekt C++ natywny dla VS2008, który chcę skompilować jako bibliotekę DLL.Projekt C++ kompiluje się jako statyczna lib, kończy się niepowodzeniem (błąd łącznika) jako dynamiczna biblioteka. czemu?
Odnosi się tylko do jednej biblioteki zewnętrznej (log4cplus.lib) i wykorzystuje jej funkcje. (również używa plików .h4 log4cplus, oczywiście).
Kiedy próbuję skompilować mój projekt jako bibliotekę statyczną, to sukces. Kiedy próbuję jako DLL, to nie:
1>MessageWriter.obj : error LNK2019: unresolved external symbol "public: static class log4cplus::Logger __cdecl log4cplus::Logger::getInstance(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" ([email protected]@[email protected]@[email protected][email protected][email protected][email protected]@@[email protected][email protected]@@[email protected]@@Z) referenced in function "class log4cplus::Logger __cdecl Log(void)" ([email protected]@[email protected]@@XZ)
Istnieją 4 więcej błędów tak jak ten związany z funkcji w log4cplus.lib.
Wydaje się, że coś naprawdę głupiego .. proszę mi pomóc :)
Dzięki!
Edit:
jestem powiązany z plikiem log4cplus.lib, i stwierdzi, że dobrze. również, log4cplus.lib jest w 100% funkcjonalny, używam go w innym projekcie bez żadnych problemów. Mój oryginalny intencją było skompilować mój projekt jako statyczne biblioteki i używać go w innym DLL piszę, ale kiedy to zrobić, mam te same błędy linkera w tym drugim projekcie ...
Edit # 2:
Funkcje, które powodują błędy linkera, są funkcjami statycznymi. Czy może to być częścią problemu?
Tak, jestem powiązanie z plikiem log4cplus.lib ... – Roey
OK cool - i to w ścieżce biblioteki? – trojanfoe
tak, znajdzie plik na pewno (gdy zmienię nazwę biblioteki na coś, co nieprawdziwa kompilacja zawodzi od razu) ... Nie rozumiem, dlaczego nie znaleźć te funkcje wewnątrz log4cplus.lib ... :( – Roey