C++/CLI: linker gibt "nicht aufgelöstes token" für die win32-Funktion
Leute,
Ich habe gerade meinen ersten C++/CLI Projekt (Visual Studio 2008) ist eine Bibliothek, die zulassen, dass meine C# - app Zugriff auf eine point-of-sale tally-Drucker.
Meine Bibliothek baut gut und triviale Funktionen funktionieren, wenn der Aufruf aus einer C# - exe.
Aber sobald ich einen WinGDI call (DeleteObject in diesem Fall), der linker beschwert sich mit "nicht aufgelöstes token" - Fehler.
Fehler 2 error LNK2028: nicht aufgelöstes
token (0A000088) "extern "C" int
__stdcall DeleteObject(void *)" (?DeleteObject@@$$J14YGHPAX@Z)
verwiesen in Funktion " "private:
__clrcall ReceiptPrinter::Epson::~Epson - (void)"
(??1Epson@ReceiptPrinter@@$$FA$AAM@XZ) ReceiptPrinter.obj ReceiptPrinter
Ich habe nicht getan, alle schweren C++ in den letzten 4 Jahren, und ich habe wenig Erfahrung in MS-C++ - Compiler, als solche ich weiß nicht, was ich in den linker-Einstellungen.
Jede Hilfe wird greatfully erhalten.
Dank
Zusätzliche Abhängigkeiten war "NoInherit", als ich mir "unter" die Einstellung, es wurde eine Liste von Bibliotheken gdi32.lib war in der Liste. Ich habe überprüft, "Inherit from parent project" und es funktioniert jetzt. Dirk, wenn du alle hinzufügen, die als eine Antwort werde ich wählen Sie es aus und geben Sie die rep. Danke Kumpel 🙂
InformationsquelleAutor Binary Worrier | 2009-04-11
Du musst angemeldet sein, um einen Kommentar abzugeben.
Prüfen, ob Gdi32.lib gibt es in der linker-Kommandozeile(Eigenschaften - > Linker > CommandLine).
(Da haben Sie es -- Sie haben erfolgreich appellierte an die meine egoistischen, rep Suche nach Teil der Seele 😉 )
P. S. nochmals vielen Dank Kumpel
Worrier: Hm. Begradigen Sie mich, wenn Sie denken, ich Verdiene es nicht.
Keine Angst. IMO wirklich rep hoors neigen dazu, ein hohes Verhältnis von Fragen zu Antworten, ich denke, Ihr rep "Ruf" ist sicher mit einem Verhältnis von 4:683 🙂 zu Spät dude,
Explizit wählen Sie ""Erbt vom übergeordneten Projekt""
InformationsquelleAutor dirkgently
Sollten Sie Ihren dll Gdi32.lib.
Können Sie entweder tun Sie es mit einem #pragma comment(lib, "gdi32.lib") oder in Ihrem Projekt die Einstellungen unter Linker.
InformationsquelleAutor Idan K
Der Hinweis ist in der __clrcall Modifikator auf den Funktionsdeklarationen. Ihre Windows Forms-Anwendung verwendet Reine Common Language Runtime-code und den Aufruf-Konventionen standardmäßig. Ihre externe Bibliothek, die Sie verknüpfen, nicht. Sie müssen die Common Language Common Language Runtime Unterstützung-Einstellung in der Projekt-Standardeinstellungen Bereich der Projekt-Eigenschaften von /clr:pure auf /clr. Das funktionierte für mich.
InformationsquelleAutor Graham Asher