У меня есть проект Windows Phone 8 и еще один проект, написанный на C++; оба находятся в одном и том же решении. Проект C++ является динамической библиотекой, используемой в проекте WP8, и он настроен на создание файла Windows Metada (.winmd
) поверх файла .dll
.Добавление ссылки «winmd» и добавление ссылки на проект
При добавлении проекта C++ в качестве ссылки на проект в проекте WP8 все работает отлично.
Однако я хотел бы непосредственно ссылаться на двоичные файлы вместо проекта, поэтому я попытался обратиться к самому .dll
, но VS2012 не позволил мне (что я полностью понимаю, так как библиотека неуправляема из того, что я понимаю). Добавление файла .winmd
вместо этого работает, я имею в виду, что оно компилируется без предупреждения/ошибок; но он падает во время выполнения (я получаю TargetInvocationException
, который возникает из-за того, что «фактический» код библиотеки C++ не найден).
При добавлении файла .winmd
я убедился, что файл .dll
находится рядом с ним. Включение обоих файлов в каталог bin
проекта WP8 также не работает.
Я не могу найти никаких подсказок в интернете, и я был бы вам признателен, если бы вы могли дать мне какие-либо подсказки!
Вот схема тривиальных архитектур Я пытаюсь настроить:
А вот StackTrace за исключение поднятое:
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()
Благодарим вас за ответ. Свойству Copy Local установлено значение true; и оба файла 'winmd' и' all' находятся в списке, отображаемом после 'Begin Xap packaging'. Я немного упростил ситуацию в своем оригинальном посте; У меня есть файл C++, создающий 'dll' и' winmd', этот 'winmd' используется в проекте библиотеки классов WP8, который создает' dll', используемый в «конкретном» проекте WP8. Два файла 'dll' и' winmd' правильно копируются во время сборки. – Max
Ты мне не помогаешь. "все файлы? Две DLL? Теперь у вас есть способ диагностировать различия между двумя подходами, но не упоминал о них. У меня нет подробного сообщения об исключении. Я бы рекомендовал ссылку на проект, если вы не можете документировать его лучше. –
Извините, что я имел в виду «файлы winmd' и' dll », мой палец как-то скользнул к клавише' a' ... – Max