Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Visual Studio 2010 C++ Problem mit Linker

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
20.06.2013, 14:54 Uhr
AllenWalker



Hallo,

Bin Neuling hier im Forum und Neu in der Sprache C++.

Ich möchte gerne ein Programm schreiben welches Zufallszahlen über OSC verschickt. Als Bibliothek nutze ich oscpack. In dem zip-Archiv ist ein Beispielquellcode "SimpleSend.cpp" im Ordner Examples, welchen ich für meine Zwecke angepasst habe. Die Headerdateien habe ich nach diesem Tutorial eingebunden.

Wenn ich versuche das Programm auszuführen bekomme ich folgende Meldungen:

Zitat:

1>------ Erstellen gestartet: Projekt: Kinect_OSC_Cplusplus, Konfiguration: Debug Win32 ------
1>Der Buildvorgang wurde am 12.06.2013 11:43:55 gestartet.
1>InitializeBuildStatus:
1> Aktualisieren des Timestamps von "Debug\Kinect_OSC_Cplusplus.unsuccessfulbuild".
1>ClCompile:
1> Alle Ausgaben sind aktuell.
1> Alle Ausgaben sind aktuell.
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall osc::OutboundPacketStream::OutboundPacketStream(char *,unsigned int)" (??0OutboundPacketStream@osc@@QAE@PADI@Z)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall osc::OutboundPacketStream::~OutboundPacketStream(void)" (??1OutboundPacketStream@osc@@QAE@XZ)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: unsigned int __thiscall osc::OutboundPacketStream::Size(void)const " (?Size@OutboundPacketStream@osc@@QBEIXZ)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: char const * __thiscall osc::OutboundPacketStream::Data(void)const " (?Data@OutboundPacketStream@osc@@QBEPBDXZ)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: class osc::OutboundPacketStream & __thiscall osc::OutboundPacketStream::operator<<(struct osc::BeginMessage const &)" (??6OutboundPacketStream@osc@@QAEAAV01@ABUBeginMessage@1@@Z)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: class osc::OutboundPacketStream & __thiscall osc::OutboundPacketStream::operator<<(struct osc::MessageTerminator const &)" (??6OutboundPacketStream@osc@@QAEAAV01@ABUMessageTerminator@1@@Z)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: class osc::OutboundPacketStream & __thiscall osc::OutboundPacketStream::operator<<(long)" (??6OutboundPacketStream@osc@@QAEAAV01@J@Z)" in Funktion ""public: class osc::OutboundPacketStream & __thiscall osc::OutboundPacketStream::operator<<(int)" (??6OutboundPacketStream@osc@@QAEAAV01@H@Z)".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""private: static unsigned long __cdecl IpEndpointName::GetHostByName(char const *)" (?GetHostByName@IpEndpointName@@CAKPBD@Z)" in Funktion ""public: __thiscall IpEndpointName::IpEndpointName(char const *,int)" (??0IpEndpointName@@QAE@PBDH@Z)".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall UdpSocket::UdpSocket(void)" (??0UdpSocket@@QAE@XZ)" in Funktion ""public: __thiscall UdpTransmitSocket::UdpTransmitSocket(class IpEndpointName const &)" (??0UdpTransmitSocket@@QAE@ABVIpEndpointName@@@Z)".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: virtual __thiscall UdpSocket::~UdpSocket(void)" (??1UdpSocket@@UAE@XZ)" in Funktion "__unwindfunclet$??0UdpTransmitSocket@@QAE@ABVIpEndpointName@@@Z$0".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall UdpSocket::Connect(class IpEndpointName const &)" (?Connect@UdpSocket@@QAEXABVIpEndpointName@@@Z)" in Funktion ""public: __thiscall UdpTransmitSocket::UdpTransmitSocket(class IpEndpointName const &)" (??0UdpTransmitSocket@@QAE@ABVIpEndpointName@@@Z)".
1>Kinect_OSC_Cplusplus.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: void __thiscall UdpSocket::Send(char const *,unsigned int)" (?Send@UdpSocket@@QAEXPBDI@Z)" in Funktion "_wmain".
1>Kinect_OSC_Cplusplus.obj : error LNK2001: Nicht aufgelöstes externes Symbol ""struct osc::MessageTerminator osc::EndMessage" (?EndMessage@osc@@3UMessageTerminator@1@A)".
1>c:\users\administrator\documents\visual studio 2012\Projects\Kinect_OSC_Cplusplus\Debug\Kinect_OSC_Cplusplus.exe : fatal error LNK1120: 13 nicht aufgelöste Externe
1>
1>Fehler beim Buildvorgang.
1>
1>Verstrichene Zeit 00:00:00.11
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========



Mein Quellcode:

Code:
// Kinect_OSC_Cplusplus.cpp : Definiert den Einstiegspunkt für die Konsolenanwendung.
//

#include "stdafx.h"
#include <stdlib.h>

#include "osc/OscOutboundPacketStream.h"
#include "ip/UdpSocket.h"

#define ADDRESS "127.0.0.1"
#define PORT 7000

#define OUTPUT_BUFFER_SIZE 1024

int _tmain(int argc, _TCHAR* argv[])
{
    (void) argc; // suppress unused parameter warnings
    (void) argv; // suppress unused parameter warnings

    UdpTransmitSocket transmitSocket(IpEndpointName(ADDRESS,PORT));
  
    char buffer[OUTPUT_BUFFER_SIZE];
    osc::OutboundPacketStream p(buffer,OUTPUT_BUFFER_SIZE);

    int zufallsZahl;

    for(int i=0;i<10;i++){
        zufallsZahl = rand() % 100 + 1;
        p << osc::BeginMessage("/Zufallszahl") << zufallsZahl << osc::EndMessage;
    }
  
    transmitSocket.Send(p.Data(),p.Size());
    return 0;
}



Kann mir einer bitte weiterhelfen?
Danke sehr,
Gruß,
AllenWalker

---
Edit: Smilies abgeschaltet.

Dieser Post wurde am 21.06.2013 um 03:27 Uhr von Hans editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
21.06.2013, 03:26 Uhr
Hans
Library Walker
(Operator)


Hi,

habe zwar kein VS2012, aber die Meldung: "error LNK2019: Verweis auf nicht aufgelöstes externes Symbol" spricht dafür, dass Du dem Linker noch mitteilen musst, wo er die entsprechenden Bibliotheken findet. Das sind Dateien mit der Endung lib, und der Linker braucht den Pfad dahin, also irgendwas der Art: "C:\Program Files\visual studio 2012\Lib".

Die Headerdateien, also jene mit der Endung .h braucht nur der Compiler, aber nicht der Linker.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
21.06.2013, 09:21 Uhr
Tommix



Morgen,
das Vorgehen ist in dem zitierten Tutorial unter "Das lib-Verzeichnis ins Projekt einbinden" ausführlich beschrieben.

Gruß,
Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.06.2013, 19:01 Uhr
AllenWalker



Vielen Dank für die Antwort
Laut dem Punkt Header Dateien einbinden aus dem Tutorial habe ich die Header Dateien aus dem osc-Pack eingebunden. In dem osc-Pack sind keine lib-Dateien vorhanden, nur h-Dateien.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
25.06.2013, 21:35 Uhr
Hans
Library Walker
(Operator)


Hi,

ich hab mir jetzt mal das OSCpack angesehen und festgestellt, dass das, was Du vor hast, so auch noch nicht funktionieren kann, wie Du es Dir vorstellst. Es handelt sich dabei um Quellcode, also C++ Code für die OSC-Bibliothek und ein paar Testprogramme. Bevor Du damit was anfangen kannst, musst Du also erst mal die Bibliothek selbst übersetzen. Das ist ein eigenständiges Projekt in VC, wo wahlweise eine dll oder eine lib-Datei als Ergebniss heraus kommt. Erst wenn Du diese Arbeit erledigt hast, kannst Du eigene Projekte darauf aufbauen.

Einen weiteren Haken gibt es dabei noch: die make-Datei (makefile) ist für Linux bzw. Mac OS. D.h. wenn VS keine Importfunktion für Unix/Linux-makedateien hat (was ich stark annehme aber nicht sicher weis) dann kannst du damit erst mal nichts anfangen. Dann kommt das Programm CMake ins Spiel, wovon in der Readme-datei die Rede ist. Damit kannst Du die make-datei für VC bauen, damit Du die Bibliothek unter VC übersetzen kannst.

Wenn Du bei dem, was ich hier geschrieben habe nicht gleich durchblickst, dann ist das nicht tragisch, denn es ist eine ziemlich umständliche bzw. aufwändige Angelegeneit.

Hans
--
Man muss nicht alles wissen, aber man sollte wissen, wo es steht. Zum Beispiel hier: Nachdenkseiten oder Infoportal Globalisierung.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: