Mehrere LNk2001 Errors nach hinzufügen eines nuget Packages



  • Hallo,
    Ich bin neu hier und auch ziemlich neu mit C++ unterwegs. Ich hoffe es ist keine dumme frage..

    Also ich benutze Visual Studio 2013 und möchte ein open source Projekt ( SUMO ) um eine Funktion erweitern, nämlich json daten per http versenden.

    Das Projekt habe ich in Visual Studio geladen und auch erfolgreich gebaut.
    Nun dann habe ich eins der Projekte erweitert und mittels nuget das Microsoft package Casablanca dazugeladen... Ich habe eine Headerdatei und eine Code datei für meinen Code geschrieben und es baut auch. Allerdings bekam ich dann mehrere Linker Errors bezüglich des Casablanca Projekts. Diese habe ich beseitigen können indem ich #pragma comment(lib, "cpprest120_2_0.lib") in mein code eingefügt habe...
    Dann ging es jedoch weiter, dass plötzlich nun auch LNK error in Bezug auf xerces kamen. Das war vorher schon im Projekt und wurde ja schon erfolgreich gebaut und aufgelöst. Nunja Xerces auch hinzugefügt... und dann gehts weiter nun haben sich die LNK errors auch auf andere Projekte ausgeweitet an denen ich nichts geändert habe und die vorher ja erfolgreich gebaut haben. Also sind die Definitionen ja definitiv schon gefunden worden. Außerdem wird in meinem Projekt gemeckert dass z.B. std:basic_string nicht aufgelöst werden kann 😕 . Das sollte ja eigentlich standard bibliothek sein. Auch in anderen Projekten werden wohl einige Standardsachen plötzlich nicht mehr gefunden soweit ich das sehe. z.B. #include <sys/socket.h>

    Ich verstehe nun nicht ganz wie ich das hinbekommen habe es so zu zermurksen. Ich habe mich etwas in C++ eingelesen und eigentlich sind die Linker fehler ja nur dass die Implementationen nicht gefunden werden können. Bei meinem hinzugefügten Projekt ok, aber wieso kommen dann immer mehr danach dazu? Vorallem da ja die Sachen auf jedenfall da sind bzw. es wurde ja schonmal erfolgreich gebaut und aufgelöst ...

    Evtl mache ich ja einen ganz blöden Fehler der zwar beim kompilieren nicht auffällt aber sich halt im Linker Fehler wiederspiegelt??

    Hier mal mein Code für den Header :

    #ifndef connect_h
    #define connect_h
    
    #include <utils/common/SUMOTime.h>
    
    namespace jsonc
    {
    	class connect
    	{
    	public:
    
    		static void write(SUMOTime timestep);
    	private:
    		static std::wstring convert(const std::string& as);
    	};
    }
    #endif
    

    Und hier meine cpp datei :

    #include "jsonconnect.h"
    
    #include <cpprest/http_client.h>
    #include <cpprest/json.h>
    #pragma comment(lib, "cpprest120_2_0.lib")
    #pragma comment(lib, "C:/xerces-c-3.1.1-x86-windows-vc-10.0/lib/xerces-c_3.lib")
    
    using namespace web;
    using namespace web::http;
    using namespace web::http::client;
    
    #include <microsim/MSEdge.h>
    #include <microsim/MSLane.h>
    #include <microsim/MSNet.h>
    #include <microsim/MSVehicle.h>
    #include <utils/options/OptionsCont.h>
    #include <utils/geom/GeoConvHelper.h>
    #include <Windows.h>
    
    namespace jsonc
    {
    	void connect::write(SUMOTime timestep) 
    	{
    		const bool signals = OptionsCont::getOptions().getBool("fcd-output.signals");
    		MSVehicleControl& vc = MSNet::getInstance()->getVehicleControl();
    		MSVehicleControl::constVehIt it = vc.loadedVehBegin();
    		MSVehicleControl::constVehIt end = vc.loadedVehEnd();
    
    		json::value vehicles;
    		json::value timestamp;
    		timestamp[L"timestamp"] = json::value::string(convert(time2string(timestep)));
    		vehicles[0] = timestamp;
    		for (; it != end; ++it) {
    			const MSVehicle* veh = static_cast<const MSVehicle*>((*it).second);
    			if (veh->isOnRoad()) {
    				Position pos = veh->getPosition();
    				MSLane* lane = veh->getLane();
    				GeoConvHelper::getFinal().cartesian2geo(pos);
    
    				json::value vehicle;
    				vehicle[L"id"] = json::value::string(convert(veh->getID()));
    				vehicle[L"x"] = json::value::number(pos.x());
    				vehicle[L"y"] = json::value::number(pos.y());
    				vehicle[L"angle"] = json::value::number(veh->getAngle());
    				vehicle[L"speed"] = json::value::number(veh->getSpeed());
    				vehicle[L"pos"] = json::value::number(veh->getPositionOnLane());
    				vehicle[L"slope"] = json::value::number(lane->getShape().slopeDegreeAtOffset(veh->getPositionOnLane()));
    				vehicle[L"lane"] = json::value::string(convert(lane->getID()));
    				vehicle[L"type"] = json::value::string(convert(veh->getVehicleType().getID()));
    
    				vehicles[1] = vehicle;
    
    				//of.setPrecision(GEO_OUTPUT_ACCURACY);
    
    				if (signals) {
    					//of.writeAttr("signals", toString(veh->getSignals()));
    				}
    			}
    
    			http_client client(L"http://localhost:5140/");
    
    			client.request(methods::POST, L"", vehicles.to_string().c_str(),
    				L"application/json").then([](http_response response)
    			{
    				std::wcout << response.status_code() << std::endl;
    
    				if (response.status_code() == status_codes::OK)
    				{
    					auto body = response.extract_string();	
    				}
    			});
    		}
    
    	}
    	std::wstring convert(const std::string& as)
    	{
    		// deal with trivial case of empty string
    		if (as.empty())    return std::wstring();
    
    		// determine required length of new string
    		size_t reqLength = ::MultiByteToWideChar(CP_UTF8, 0, as.c_str(), (int)as.length(), 0, 0);
    
    		// construct new string of required length
    		std::wstring ret(reqLength, L'\0');
    
    		// convert old string to new string
    		::MultiByteToWideChar(CP_UTF8, 0, as.c_str(), (int)as.length(), &ret[0], (int)ret.length());
    
    		// return new string ( compiler should optimize this away )
    		return ret;
    	}
    }
    

    Wäre super wenn mir jemand helfen kann sitze jetzt hier schon den ganzen Tag dran 🙂

    Ups hier noch die Fehler :

    Fehler	32	error LNK1120: 31 nicht aufgelöste Externe	C:\sumo-0.20.0\build\msvc11\sumo\Release\sumo.exe	1	1	sumo
    Fehler	1	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: class pplx::task<class web::http::http_response> __thiscall web::http::client::http_client::request(class web::http::http_request,class pplx::cancellation_token)" (__imp_?request@http_client@client@http@web@@QAE?AV?$task@Vhttp_response@http@web@@@pplx@@Vhttp_request@34@Vcancellation_token@6@@Z)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	2	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) class std::shared_ptr<struct pplx::scheduler_interface> __cdecl pplx::get_ambient_scheduler(void)" (__imp_?get_ambient_scheduler@pplx@@YA?AV?$shared_ptr@Uscheduler_interface@pplx@@@std@@XZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	3	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) long __cdecl pplx::details::platform::GetCurrentThreadId(void)" (__imp_?GetCurrentThreadId@platform@details@pplx@@YAJXZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	4	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall pplx::details::critical_section_impl::unlock(void)" (__imp_?unlock@critical_section_impl@details@pplx@@QAEXXZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	5	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall pplx::details::critical_section_impl::lock(void)" (__imp_?lock@critical_section_impl@details@pplx@@QAEXXZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	6	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall pplx::details::critical_section_impl::~critical_section_impl(void)" (__imp_??1critical_section_impl@details@pplx@@QAE@XZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	7	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall pplx::details::critical_section_impl::critical_section_impl(void)" (__imp_??0critical_section_impl@details@pplx@@QAE@XZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	8	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: unsigned int __thiscall pplx::details::event_impl::wait(unsigned int)" (__imp_?wait@event_impl@details@pplx@@QAEII@Z)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	9	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: void __thiscall pplx::details::event_impl::set(void)" (__imp_?set@event_impl@details@pplx@@QAEXXZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	10	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall pplx::details::event_impl::~event_impl(void)" (__imp_??1event_impl@details@pplx@@QAE@XZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	11	error LNK2001: Nicht aufgelöstes externes Symbol ""__declspec(dllimport) public: __thiscall pplx::details::event_impl::event_impl(void)" (__imp_??0event_impl@details@pplx@@QAE@XZ)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	12	error LNK2001: Nicht aufgelöstes externes Symbol ""private: static class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > __cdecl jsonc::connect::convert(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (?convert@connect@jsonc@@CA?AV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@ABV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@4@@Z)".	C:\sumo-0.20.0\build\msvc11\sumo\z_libmicrosim_output.lib(jsonconnect.obj)	sumo
    Fehler	13	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__accept@12".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	14	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__listen@8".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	15	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__send@16".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	16	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__gethostbyname@4".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	17	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__closesocket@4".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	18	error LNK2001: Nicht aufgelöstes externes Symbol "___WSAFDIsSet@8".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	19	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__socket@12".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	20	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__bind@12".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	21	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__recv@16".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	22	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSACleanup@0".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	23	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__setsockopt@20".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	24	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__htons@4".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	25	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAGetLastError@0".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	26	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__select@20".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	27	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__htonl@4".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	28	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__inet_addr@4".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	29	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__WSAStartup@8".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	30	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__connect@12".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    Fehler	31	error LNK2001: Nicht aufgelöstes externes Symbol "__imp__ioctlsocket@12".	C:\sumo-0.20.0\build\msvc11\sumo\zz_foreign_tcpip.lib(socket.obj)	sumo
    

    Wie gesagt das Project tcpip lief vorher wunderbar durch. Und die socket imp z.B. ist diese sys/socket.h 😕


Anmelden zum Antworten