# Libnodave mit VS2008 C++



## Zipfelklatscher (8 Mai 2010)

Hallo zusammen,

ich hab ein Problem mit den libnodave C Headern.
Ich hab ein kleines Testprogramm, welches ich unter Visual Studio 2008 mit C++
erstellt habe. Da die Quelldateien in C geschrieben wurden habe ich den Quelltext (siehe unten) leicht verändern müssen. Der Kompiler meckert beim
Übersetzen auch nicht nur der Linker bricht mit den folgenden Meldungen ab.


```
1>Verknüpfen...
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveDisconnectAdapter@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveDisconnectPLC@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveGetFloat@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveGetS32@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveReadBytes@24" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveConnectPLC@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveNewConnection@16" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveInitAdapter@4" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__daveNewInterface@24" in Funktion "_main".
1>nodaveRohling.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__setPort@12" in Funktion "_main".
1>C:\Users\Administrator\Documents\Visual Studio 2008\Projects\nodaveRohling\Debug\nodaveRohling.exe : fatal error LNK1120: 10 nicht aufgelöste externe Verweise.
1>Das Buildprotokoll wurde unter "file://c:\Users\Administrator\Documents\Visual Studio 2008\Projects\nodaveRohling\nodaveRohling\Debug\BuildLog.htm" gespeichert.
1>nodaveRohling - 11 Fehler, 0 Warnung(en)
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
```

Hier mein Quellcode:


```
#include <stdio.h>
#include "stdafx.h"


extern "C"{
#define BCCWIN 
#define LITTLEENDIAN
}
extern "C"{
#include "nodave.h"
}
extern "C"{
#include "setport.h"
}

extern "C"{
int main(int argc, char **argv) {
    int a,b,c,
	localMPI, plcMPI;
    float d;
    daveInterface * di;
    daveConnection * dc;
    _daveOSserialType fds;
    
    localMPI=0;
    plcMPI=2;
    
//    daveDebug=daveDebugAll;
    
    fds.rfd=setPort(argv[1],"38400",'O');
    fds.wfd=fds.rfd;

    di =daveNewInterface(fds, "IF1", localMPI, daveProtoMPI, daveSpeed187k);
    di ->timeout=5000000;
	
    daveInitAdapter(di);
	
    dc =daveNewConnection(di,plcMPI,0,0);  // insert your MPI address here
    printf("ConnectPLC\n");

    daveConnectPLC(dc);
    
    daveReadBytes(dc, daveFlags, 0, 0, 16,NULL);
            
    a=daveGetS32(dc);	
    b=daveGetS32(dc);
    c=daveGetS32(dc);
    d=daveGetFloat(dc);
	    
    printf("FD0: %d\n",a);
    printf("FD4: %d\n",b);
    printf("FD8: %d\n",c);
    printf("FD12: %f\n",d);
	
    printf("Now disconnecting\n");	
    daveDisconnectPLC(dc);
    daveDisconnectAdapter(di);

	return 0;
}
}
```

Hat vielleicht von Euch jemand eine Lösung für das Problem ?

Danke schon mal im vorraus


----------



## Jochen Kühner (8 Mai 2010)

*Linken...*

Links du denn auch gegen die LibNoDave?


----------



## Zipfelklatscher (8 Mai 2010)

Leider verstehe ich deine Antwort glaube ich nicht genau. Sorry


----------



## Zipfelklatscher (8 Mai 2010)

Hier das Visual Studio Projekt im Anhang.


----------



## Zipfelklatscher (9 Mai 2010)

Hallo,

das Thema hat sich erledigt, hab die Lösung gefunden.
Hatte die .obj nicht eingebunden.


```
#include "stdafx.h"
#include <stdio.h>
#include <iostream>
#include <string>

using namespace std;

// Bibliotek einbinden
#pragma comment(lib, "libnodave.lib")

extern "C"{
#define BCCWIN 
#define LITTLEENDIAN
}
extern "C"{
#include "nodave.h"
}
extern "C"{
#include "openSocket.h"
}
```


----------



## Rainer Hönle (9 Mai 2010)

Dei Bibliothek kann auch normal unter den Linkereinstellungen hinzugefügt werden.


----------



## Jochen Kühner (9 Mai 2010)

*Hmm...*

Also war mein Tip richtig???


----------



## bike (9 Mai 2010)

Jochen Kühner schrieb:


> Also war mein Tip richtig???



Bei dem Nick ist jeder Tipp richtig.

bike


----------



## Rainer Hönle (10 Mai 2010)

Jochen Kühner schrieb:


> Also war mein Tip richtig???



Ja (auf zehn Zeichen auffüll)


----------

