Мое решение в Visual Studio 2012 имеет три проекта. Проект WinForms и два проекта VC++ (Библиотеки). Первоначально все разработки были выполнены на 32-битной Windows 7 Professional. Но недавно моя система была обновлена до 64-разрядной версии Windows 7 Professional.Изменение с 32 до 64 бит
Мое приложение успешно работает и успешно работает с платформой Active Solution, установленной в AnyCPU. Но когда приложение запускается, и я выполняю какое-либо действие, которое вызывает вызов базовой библиотеки VC++, приложение вылетает с FileNotFoundException
для dll.
Должен ли я изменить платформу активных решений на x64? Или это прекрасно, чтобы оставить это как есть.
Я попытался сменить платформу активных решений на x64. Но dll не создает. Я получаю error LNK2019: unresolved external symbol
Я никогда раньше не использовал 64-бит. Что мне нужно сделать для создания моего приложения?
Символы, которые не найдены, присутствуют в третьем проекте VC++, который является статической библиотекой.
WinForms зависит от dll, а dll зависит от статической библиотеки lib.
Update:
При конфигурации сборки установлен в AnyCPU, я получаю System.BadImageFormatException
. По дополнительной информации, он говорит, что не удалось загрузить файл или сборку dll_name,....
. Была предпринята попытка загрузить программу с неправильным форматом.
Почему бы вам не рассказать нам больше об ошибке, которую вы получаете. Какой символ не разрешен? –
Если нет убедительной причины для запуска приложения в 64-разрядном режиме, скорее всего, будет проще оставить его как 32-разрядный. Это означает установку платформы Active Solution на x86. –
64-разрядные процессы не могут вызывать 32-разрядные DLL и наоборот. Вы должны убедиться, что все вызывающие функции в вашей программе - это 64-разрядная версия –