Forum: PC-Programmierung Dll für VC6 erneut umsetzen, in VC2k3 nutzen ohne alte Inputs


von Linker quähler (Gast)


Lesenswert?

Hallo Forum,

ich habe ein kleines Problem und würde mich freuen wenn ihr mir helfen 
könntet.

Also, ich nutze erst ein mal Microsoft VC2k3. Ich möchte Can Module 
Ansprechen, Can-Botschaften liegen im Vector *.dbc Format vor.
Habe von Vector eine Schittstelle dabei, die mir erlaubt die Botschaften 
auszulesen, anzusprechen, wenn Sie ein mal in der *.dbc definiert sind.

Problem 1:
Der Code von Vector, besteht aus 3 Headers mit Lib und Dll.
Möchte ich dieses in VC2k3 nutzen, erhalte ich Linker Errors. Analyse 
ergab das vom Sprung von VC6 auf VC2k3 das Händling mit den Iteratoren 
anders ist.

Lösung: Nutze VC6

Eigentliches Problem:
Ich habe in VC6 einen Wrapper geschrieben, ich erstelle eine Instanz der 
Klasse von Vector und reiche die Funktion einfach nur durch.
Die Dll wird erstellt und zum Schluss habe ich aus den 3 Vector Dateien 
einen Wrapper.

Mein Wrapper ist einfach nur eine neue Klasse, welche die gleichen 
Methoden besitzt (anders geschrieben) und einfach nur die alte Klasse 
zum ausführen nutzt.

Rufe ich jetzt eine Methode des Wrappers auf, möchte dieser die alten 
*.lib Dateien von Vector. Womit dann VC2k3 wieder Probleme bekommt.

Warum möchte mein Linker noch ein mal diese alten *.lib

Wie bekomme ich den Linker dazu die Funktionen komplett in meine 
Wrapper-Klasse zu übernehmen. Wenn ich schon eine Instanz der Vector 
Klasse erstellt habe und die Funktionen darin nutze, und dies einfach 
durchreiche. Ist es ja schon gelinkt und VC2k3 sollte keine Probleme 
mehr haben.

Habe ich etwas anderes nicht bedacht? Es tut mir leid das ich keinen 
Code Posten kann, aber das Vector-Kram unterliegt Lizensen. Und damit 
Spaßen die bestimmt nicht.

Falls ich etwas vergessen habe, einfach fragen, bin für Hilfe dankbar 
und lerne gern.

Gruß.

von -- (Gast)


Lesenswert?

VC6 DLLs sind nicht binärkompatibel zu vc7/8.
die .net Umstellung... .

In >= vc7 neu kompilieren oder neu.

Gruß

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Nein. Sofern die DLLs mit C-linkage angesprochen werden können, also 
keine dekorierten Symbolnamen verwenden, ist es vollkommen wurscht, mit 
welchem Compiler sie erstellt wurden, sie lassen sich selbstverständlich 
auch mit neueren VC-Versionen ansprechen.
Bei C++-DLLs (also welchen mit dekorierten Namen) sieht das schon ganz 
anders aus, auch bei DLLs, die die MFC nutzen. Denn die ist/sind, obwohl 
schon oft totgesagt, weiterentwickelt worden.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.