Использование библиотек / clr и noclr в одном проекте - PullRequest
1 голос
/ 21 октября 2010

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

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

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 21 октября 2010

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

EDIT:

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

В следующем примере генерируется C3381:

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

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

0 голосов
/ 21 октября 2010

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

...