Использование библиотек /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.