Любой процессор, зависящий от C ++ / CLI, зависящий от собственной библиотеки DLL C (любой процессор для c ++ / cli)

Вот моя проблема. Я оборачиваю C dll на C #. Для этого я сначала пишу оболочку C ++ / CLI. Собственная библиотека C связана с оболочкой C ++ / CLI. (Свойства компоновщика в проекте C ++ / cli).

Вот как это все организовано сейчас: - родная библиотека C: как x86, так и 64bit.

  • 1 решение, содержащее 2 проекта:
    • Проект оболочки C ++ / CLI, к которому привязан собственный файл C .lib
    • Проект C #, ссылающийся на проект C ++ / CLI

Моя проблема исходит из того факта, что мне нужен C # для таргетинга "Any CPU". Но этот параметр недоступен в C ++ / CLI, поскольку он компилируется непосредственно в собственный код.

Моя идея решить эту проблему такова: - Скомпилировать оболочку C ++ / CLI в x86, а затем изменить конфигурацию и скомпилировать на 64-битную версию. Когда он компилируется, я хотел бы сказать ему, какую dll взять в зависимости от платформы. то есть: при компиляции в 64-битной среде свяжите 64-битную родную библиотеку C, иначе, если x86, свяжите x86 родную C. - После этого я должен иметь возможность иметь любой целевой процессор на моей платформе C #. Здесь опять же, вместо того, чтобы ссылаться на мой проект оболочки C ++ / CLI, я бы сослался на необходимую dll на основе целевой платформы.

У меня следующие вопросы:

  • Как сказать проекту C ++ / CLI, который.lib для ссылки на целевой платформе?
  • Как сообщить проекту C #, на какую dll C ++ / CLI ссылаться в зависимости от целевой платформы?

Позвольте мне добавить, что проект C # - это БИБЛИОТЕКА КЛАССОВ для использования клиентом x86 или x64.

Надеюсь, мой вопрос достаточно ясен. Любая помощь будет оценена по достоинству!

ОБНОВЛЕНИЕ на основе: Условные ссылки в проекте .NET, можно ли избавиться от предупреждения? ...

Итак, теперь я отредактировал свой файл .csproj, используя условие для сослаться на dll следующим образом:


    
      False
      ..\x64\Debug\AlibCppWrapper.dll
    
    
      False
      ..\Debug\AlibCppWrapper.dll
    
  

К сожалению, это не работает, поскольку для $ (Platform) установлено значение AnyCPU ...

17
задан Community 23 May 2017 в 10:32
поделиться