Ich habe ein Windows Phone 8-Projekt und ein anderes Projekt in C++ geschrieben; Beide sind in der gleichen Lösung. Das C++ - Projekt ist eine dynamische Bibliothek, die im WP8-Projekt verwendet wird. Es ist so konfiguriert, dass eine Windows Metada-Datei (.winmd
) über der Datei .dll
erstellt wird.Hinzufügen einer "winmd" -Referenz vs. Hinzufügen eines Projektverweises
Beim Hinzufügen des C++ - Projekts als Projektreferenz im WP8-Projekt funktioniert alles einwandfrei.
Allerdings würde ich direkt auf die Binärdateien anstelle des Projekts verweisen, so dass ich versucht, die .dll
selbst zu referenzieren, aber VS2012 würde mich nicht lassen (was ich völlig verstehe, da die Bibliothek nicht verwaltet wird, was ich verstehe). Hinzufügen der .winmd
Datei funktioniert stattdessen, ich meine es kompiliert ohne Warnung/Fehler; aber es stürzt zur Laufzeit ab (ich bekomme eine TargetInvocationException
, die ausgelöst wird, weil der "tatsächliche" Code der C++ - Bibliothek nicht gefunden werden kann).
Beim Hinzufügen der .winmd
Datei, stellte ich sicher, dass die .dll
Datei war daneben. Wenn Sie beide Dateien in das Verzeichnis bin
des WP8-Projekts einfügen, funktioniert dies auch nicht.
Ich kann keine Hinweise im Internet finden und ich wäre dankbar, wenn Sie mir etwas geben könnten, irgendwelche Hinweise sind willkommen!
hier ein Schema des Trivialen Architektur Ich versuche einzurichten:
Und hier ist die Stacktrace der erhöhten Ausnahme:
at System.StubHelpers.StubHelpers.GetWinRTFactoryObject(IntPtr pCPCMD)
at Sqlite.Sqlite3.sqlite3_open_v2(String filename, Database& db, Int32 flags, String zVfs)
at SQLite.SQLite3.Open(String filename, Database& db, Int32 flags, IntPtr zVfs)
at SQLite.SQLiteConnection..ctor(String databasePath, SQLiteOpenFlags openFlags, Boolean storeDateTimeAsTicks)
at SQLite.SQLiteConnection..ctor(String databasePath, Boolean storeDateTimeAsTicks)
at WP8ClassLibrary.SomeManager..ctor(String databasePath)
at WP8App.SomeViewModel..ctor()
at WP8App.MainPage..ctor()
Vielen Dank für Ihre Antwort. Die Eigenschaft "Lokal kopieren" ist auf "Wahr" festgelegt. und die Dateien 'winmd' und' all' sind in der Liste nach 'Begin Xap packaging'. Ich habe die Situation in meinem ursprünglichen Beitrag etwas vereinfacht; Ich habe eine C++ - Datei, die eine 'dll' und eine' winmd' erzeugt, diese 'winmd' wird in einem WP8-Klassenbibliotheksprojekt verwendet, das eine' dll' erzeugt, die in einem "konkreten" WP8-Projekt verwendet wird. Die zwei Dateien 'dll' und' winmd' werden während des Builds korrekt kopiert. – Max
Sie helfen mir nicht, Ihnen zu helfen. "alle Dateien? Zwei dlls? Sie haben jetzt eine Möglichkeit zu diagnostizieren, was zwischen den beiden Ansätzen unterscheidet, aber keine erwähnt. Ich habe keine detaillierte Ausnahmebedingung, um sie anzusehen. Ich würde eine Projektverweis empfehlen, wenn Sie es nicht besser dokumentieren können. –
Es tut mir leid, ich meinte "winmd" und "dll" Dateien, mein Finger rutschte irgendwie auf die a-Taste ... – Max