Вот моя проблема. Я оборачиваю C dll на C #. Для этого я сначала пишу оболочку C ++ / CLI. Собственная библиотека C связана с оболочкой C ++ / CLI. (Свойства компоновщика в проекте C ++ / cli).
Вот как это все организовано сейчас: - родная библиотека C: как x86, так и 64bit.
Моя проблема исходит из того факта, что мне нужен C # для таргетинга "Any CPU". Но этот параметр недоступен в C ++ / CLI, поскольку он компилируется непосредственно в собственный код.
Моя идея решить эту проблему такова: - Скомпилировать оболочку C ++ / CLI в x86, а затем изменить конфигурацию и скомпилировать на 64-битную версию. Когда он компилируется, я хотел бы сказать ему, какую dll взять в зависимости от платформы. то есть: при компиляции в 64-битной среде свяжите 64-битную родную библиотеку C, иначе, если x86, свяжите x86 родную C. - После этого я должен иметь возможность иметь любой целевой процессор на моей платформе C #. Здесь опять же, вместо того, чтобы ссылаться на мой проект оболочки C ++ / CLI, я бы сослался на необходимую dll на основе целевой платформы.
У меня следующие вопросы:
Позвольте мне добавить, что проект C # - это БИБЛИОТЕКА КЛАССОВ для использования клиентом x86 или x64.
Надеюсь, мой вопрос достаточно ясен. Любая помощь будет оценена по достоинству!
ОБНОВЛЕНИЕ на основе: Условные ссылки в проекте .NET, можно ли избавиться от предупреждения? ...
Итак, теперь я отредактировал свой файл .csproj, используя условие для сослаться на dll следующим образом:
False
..\x64\Debug\AlibCppWrapper.dll
False
..\Debug\AlibCppWrapper.dll
К сожалению, это не работает, поскольку для $ (Platform) установлено значение AnyCPU ...