Компилировать для смешанной платформы (32, 64) и ссылаться на 32- или 64-битную DLL, разрешенную во время выполнения

Использование VS2010 под Windows 32 или 64-бит. Наше приложение C # вызывает стороннюю DLL (управляемую), которая взаимодействует с неуправляемой DLL. Сторонний API-интерфейс DLL выглядит идентичным в 32- или 64-битном варианте, хотя под ним он ссылается на 32- или 64-битную неуправляемую DLL.

Мы хотим, чтобы наше приложение C # работало в 32- или 64-битной ОС, в идеале оно будет автоматически определять ОС и загрузите соответствующую 32-ю стороннюю DLL - через простой фабричный класс, который проверяет Enviroment. Таким образом, лучшим решением будет папка времени выполнения, содержащая: OurApp.exe 3rdParty32.DLL 3rdPartyUnmanaged32.DLL 3rdParty64.DLL 3rdPartyUnmanaged64.DLL

Однако интерфейс для управляемых dll 3rdParty 32 и 64 идентичен, поэтому на них нельзя ссылаться в рамках одного проекта VS2010: при добавлении второго появляется треугольник предупреждения отображается и не упоминается.

Единственный ли мой ответ - создать два дополнительных проекта библиотеки DLL для ссылки на библиотеки 3rdParty 32 и 64? В итоге я бы получил такую ​​схему проекта: Проект 1: создает OurApp.exe, динамически создает объект для project2 или project3. Проект 2: Сборка OurApp32.DLL, которая ссылается на 3rdParty32.dll Project 3: Builds OurApp64.DLL which references 3rdParty64.dll

5
задан Nigel Aston 24 December 2010 в 23:06
поделиться