Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Bibliothek richtig in Windows-Forms-Anwendung einbinden

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
04.08.2010, 09:41 Uhr
~just me
Gast


Hallo zusammen!

Ich habe erst seit kurzem Microsoft Visual C++ Express Edition 2010, bin also noch ziemlich unvertraut mit dieser IDE...

Ich wollte einen kleinen ID3-Tageditor schreiben, habe mir dafür die nötigen Infos und Dateien von http://id3lib.sourceforge.net/ gezogen und dann mal eine Win32-Konsolenanwendung erstellt.
Obwohl ich zu Beginn einige Probleme hatte, bis ich die Ressourcen (id3lib.lib / id3lib.dll) richtig eingebunden hatte, lief es nach einigem Gebastel irgendwann.

Da es relativ unbequem ist, in einer Konsole ID3-Tags zu editieren, machte ich mich sodann an das Erstellen einer Windows-Forms-Anwendung.
Ich habe wieder versucht, die Ressourcen einzubinden (möglichst so, wie ich es schon bei der Konsolenanwendung gemacht habe), bekomme aber trotzdem noch Linker-Fehler.

Meine Frage ist nun, ob mir jemand erklären könnte, wie man eben externe Ressourcen (in eine Windows-Forms-Anwendung) richtig einbindet?

Danke im Voraus!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.08.2010, 15:16 Uhr
0xdeadbeef
Gott
(Operator)


Windows Forms ist .net. Id3lib ist nativer Code. Es ist zwar möglich, die beiden Welten miteinander zu verbinden, aber nicht trivial.

Was genau du falsch machst, kann ich dir ohne die Fehlermeldung natürlich nicht sagen, aber ich gehe stark davon aus, dass es damit zusammenhängt. Sobald du mit Windows Forms arbeitest, befindest du dich nicht mehr in C++ und musst dementsprechend eine Codebrücke aus der virtuellen Maschine zum nativen Code schlagen.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.08.2010, 16:20 Uhr
~just me
Gast


Hallo Oxdeadbeef

Danke für die prompte Antwort!
Der Linkertoolfehler hat die Bezeichnung "LNK2028" (http://msdn.microsoft.com/de-de/library/ms235590%28v=VS.80%29.aspx).

Könntest du mir vielleicht auch sagen, wie ich eine solche "Codebrücke" baue?
Oder gibt es gar einen anderen (einfacheren ) Weg, mit der Bibliothek zu arbeiten?

Gruss jm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.08.2010, 17:11 Uhr
0xdeadbeef
Gott
(Operator)


Naja, wenn ich die Fehlermeldung richtig deute (ich arbeite eher selten mit .net), liegt dieser spezielle Fehler an /clr:pure. Stell mal in den Projekteigenschaften -> Konfigurationseigenschaften -> Allgemein unter "Common Language Runtime-Unterstützung" statt /clr:pure nur /clr ein, vielleicht bringt dich das schon weiter.

Natürlich wirst du immer noch zwischen nativer und .net-Laufzeitumgebung vermitteln müssen - wenn dir die Bibliothek etwa einen std::string gibt, wirst du den in einen System::String^ pressen müssen, bevor die Windows Forms damit etwas anfangen können - das meine ich mit Codebrücke. Umgekehrt ist es eher noch trickreicher, weil dir der Garbage-Collector jederzeit die Objekte unterm Arsch wegziehen kann (das umgeht man, wenn ich das richtig im Kopf habe, mit der pin_ptr-Generic).

Wie das in allen Einzelheiten geht, kann ich nicht in einem Forumpost beschreiben - darüber gibt es ganze Bücher, von denen du dir eines zulegen solltest.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.08.2010, 19:53 Uhr
~just me
Gast


Hey Oxdeadbeef!

Jetzt funktionierts!! Mann, wegen einer kleinen Einstellung habe ich mir stundenlang den Kopf zerbrochen...

Das mit der Codebrücke sollte ich hinbekommen; aber was habe ich nun in den Einstellungen genau geändert?

Greez und vielen Dank für deine Hilfe!
jm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.08.2010, 22:15 Uhr
0xdeadbeef
Gott
(Operator)


Nachlesbar hier: http://msdn.microsoft.com/de-de/library/ms173252.aspx

/clr:pure führt dazu, dass das Programm deutlich stärker an die .net-Laufzeitumgebung gebunden ist, was das Arbeiten mit nativem Code deutlich erschwert. /clr allein ist eine Art Mischmodus, und ich hätte erwartet, dass es für C++/CLI die Standardeinstellung ist. Immerhin macht es für C++/CLI als Adaptersprache am meisten Sinn.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
05.08.2010, 09:00 Uhr
~just me
Gast


Ok, wieder etwas dazugelernt!

Nochmals danke für deine Bemühungen!
jm
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


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: