Использование библиотек /clr и noclr в одном проекте

У меня возникли некоторые проблемы с одним проектом. Мне нужно использовать две библиотеки, но одна должна быть скомпилирована с /clr переключатель, так как другой не может быть скомпилирован с этим переключателем.

Будет ли способ использовать одновременно эти две библиотеки в одном проекте? В настоящее время он скомпилирован с /clr и я получил ошибки связывания с noclr библиотека.

Если нет решения, я все еще могу запустить noclr библиотека в пакетном режиме, но я хотел бы избежать этого...

Мой проект находится в Managed C++, библиотека tetgen - которая нуждается в /clr - находится в нативном C++ и не может быть скомпилирована без ключа / clr, так как я получаю эту ошибку

ошибка C3381: 'tetgenio': спецификаторы доступа к сборке доступны только в коде, скомпилированном с параметром / clr

Другой треугольник библиотеки находится на C. Я нахожусь на Visual Studio 2008, и проект скомпилирован в 32 бита.

2 ответа

Решение

Мы могли бы использовать больше деталей, но используя управляемый C++, вы, безусловно, можете использовать сочетание управляемого и неуправляемого кода. (Microsoft называет их управляемый код C++ C++/CLI.)

РЕДАКТИРОВАТЬ:

Хорошо, ваша ошибка компилятора помогла. Судя по всему, вы указали собственный класс, но с использованием публичного частного или другого спецификатора доступа в имени собственного класса. Из документов MSDN:

Следующий образец генерирует C3381:

// C3381.cpp
**public** class A {   // C3381. Remove public or make the class
managed. }; 
int main() { }

поэтому избавьтесь от публичного ключевого слова и попробуйте снова скомпилировать.

Вы можете иметь несколько проектов в одном решении. Щелкните правой кнопкой мыши на решении в обозревателе eolution и добавьте -> существующий / новый проект. Каждый проект библиотеки может быть добавлен таким образом и имеет свои собственные настройки clr.

Другие вопросы по тегам