Linker Problem LNK2019

pschilling

Erfahrenes Mitglied
Hallo zusammen,

ich habe hier ein wirklich seltsames Linker-Problem was ich auf Teufel komm raus nicht lösen kann.
Und zwar habe ich die Source-Codes einer OPC-Bibliothek (im Anhang vorhanden) heruntergeladen.

Die OPCClientToolkit.lib wird sauber erstellt und durch das ebenfalls beiliegende Testprogramm OPCClientDemo korrekt eingebunden und es funktioniert alles einwandfrei.

Jetzt habe ich versucht ein eigenes Projekt zu erstellen welches ebenfalls die OPCClientToolkit.lib verwendet aber egal, welche Projekteinstellungen (Konsole, Win32, MFC, Unicode, ANSI, Multibyte....) ich auch vornehme, der Linker wirft immer wieder dieselben Fehlermeldungen aus!

error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static class COPCHost * __cdecl COPCClient::makeHost
.... und weitere

Vielleicht hat ja jemand die Muße da mal reinzuschauen und kann mir einen Tipp zu geben woran ich dabei scheitere?!

Meine unendliche Dankbarkeit wäre demjenigen gewiss ;)

Hier noch ein paar Daten zu dem Rechner und der IDE:

MS Windows 7 Ultimate 64 Bit
MS Visual Studio 5.0 Professional mit SP1


Schöne Grüße,

Peter
 

Anhänge

  • OPC_DA_ClientSDK_0.4.zip
    53,2 KB · Aufrufe: 13

pschilling

Erfahrenes Mitglied
Hallo Klaus,

danke für deinen Tipp mit dem googlen, da wäre ich von alleine ja nie drauf gekommen ;)

Aber Spaß beiseite, ich würde hier nichts posten was ich durch googlen selbst lösen könnte und ich habe schon etliche Stunden damit verbracht.

Und den Source-Code zu posten würde hier niemandem etwas bringen da das wirklich ein sehr spezielles Linkerproblem ist was mit irgendeiner Projekteinstellung zusammenhängt. Das vermute ich zumindest.

Aber trotzdem Danke für deine Antwort!

Grüße,

Peter
 

pschilling

Erfahrenes Mitglied
Kann mir da wirklich niemand helfen? :(

Ich wäre ja schon wirklich froh wenn wenigstens jemand schreiben würde dass er auf dieselben Probleme beim Linken stoßen würde wie ich! ;)
 

sheel

I love Asm
Hi

welche Projekteinstellungen (Konsole, Win32, MFC, Unicode, ANSI, Multibyte....) ich auch vornehme, der Linker wirft immer wieder dieselben Fehlermeldungen aus!
Bei den Anhakeinstellungen ist dafür auch nichts zu ändern.

Wenn das Bibliothek als statische/dynamische Lib verwendet werden soll:
Ist sie in den Projektabhängigkeiten oder direkt bei der Dateiliste
vom Linker in den Projekteinstellungen eingetragen?

Wenn alles direkt ins eigene Programm kompiliert werden soll:
Sind alle c/cpp-Dateien in VS im Projekt drin?

Es würde da übrigens helfen, dein Projekt zu sehen, nicht das funktionierende Demo-Projekt.
(Und es ist wirklich ein Standardfehler, den man mit 5min Google lösen kann)

Visual Studio 5.0 Professional
Öhm ... wenn das stimmt gibts deutlich mehr Probleme als die eine Linkermeldung.
 

pschilling

Erfahrenes Mitglied
Hallo Sheel,

hast du es den geschafft geschweige denn versucht die Bibliothek lauffähig in ein eigenes Projekt hinzuzulinken?
Bzw. hast du dir die Bibliothek mal angeschaut?

Wenn es für dich mit 5 minuten googlen zu lösen wäre könntest du mir ja sicherlich weiterhelfen..
 

sheel

I love Asm
Angeschaut ja,
ausprobiert mit dem Demoprogramm ja (kompiliert/linkt problemlos),
eigenes Projekt versucht auch ja (kompiliert/linkt auch problemlos, wenn Unicode aus ist
und wie schon geschrieben die lib beim Linker drinsteht),
 

pschilling

Erfahrenes Mitglied
Verwendest du denn auch ein Objekt aus der Bibliothek?

Wenn ich nichts aus der Bibliothek verwende linkt der bei mir natürlich auch sauber durch ;)

Versuch bitte den Code mal einzufügen:

COPCHost *pHost = COPCClient::makeHost("");
CString serverName = "INAT TcpIpH1 OPC Server";
COPCServer *opcServer = pHost->connectDAServer(serverName);
 

sheel

I love Asm
Vorher hab ich den Code vom Beispielprogramm verwendet (aber eben nur den reinen
textuellen Code per copy-paste, in einem komplett neuen Projekt)

Auch mit deinen drei Zeilen geht es problemlos.
(ja, ich weiß schon dass ein leeres Programm nichts testet)

Und um das Thema etwas in Richtung Lösen zu drücken, weg vom Gegenbeweis-suchen:
a) Neues Konsolenprojekt
b) Deinen Code in die main-Datei (mit einem main natürlich)
c) Alle .h-Dateien aus OPCClientToolKit vom Beispielprojekt in deinen Projektordner
d) Die (einzige) lib-Datei aus OPCClientToolKit\Release auch in deinen Projektordner
(vorausgesetzt, das Beispielprojekt wurde vorher einmal kompiliert)
e) In deiner main-Datei OPCHost.h dazuincluden
f) Projekteinstellungen auf
g) Konfigurationseinstellungen (was für ein Wort. Zumindest heißts in 2008 so),
Allgemein, Zeichensatz, Nicht festgelegt
h) Konfigurationseinstellungen, Linker, Eingabe, Zusätzliche Abhängigkeiten, OPCClientToolKit.lib eintragen
i) OK, Projekteinstellungen zu, kompilieren, fertig.
 

pschilling

Erfahrenes Mitglied
Hallo Sheel,

vielen Dank für deine Antwort und deine Geduld!

Ich mache alles genauso wie du beschreibst bis darauf, dass ich die Bibliothek nicht ins Projektverzeichnis kopiere sondern mittels
==> 'Linker/Allgemein/Zusätzliche Bibliotheksverzeichnisse'
darauf verweise.
Gleiches mache ich übrigens auch mit den Header-Dateien.
==> 'C / C++/Allgemein/Zusätzliche Includeverzeichnisse'
In meiner Debug-Konfiguration verwende ich dann auch die Debug-Library des OPCCLientToolkits.

Wenn ich die Verwendung des vorkompilierten Headers deaktiviere linkt er dann jetzt auch gegen die OPCClientToolkit.lib :)
Aber leider bekomme ich es in einem MFC Dialogprojekt (was das eigentliche Ziel war) immer noch nicht hin :(
Ich habe das Projekt mal angehängt und hoffe, dass du mir noch sagen kannst, warum der Linker da immer noch meckert.

Schöne Grüße,

Peter
 

Anhänge

  • OPCMFC.zip
    20,5 KB · Aufrufe: 7