2010-10-21 4 views
1

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

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

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

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

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

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

+0

Не могли бы вы дать нам более подробную информацию о вашем проекте? т.е. язык? Платформа? и т. д. –

+0

Дополнительная информация до довольно тонкий. Является ли tetgen родным или управляемым? Пожалуйста, используйте избыток деталей, а не минимум. –

+0

Скажите, если вам нужно что-то еще, я не могу придумать, что добавить. – ccote

ответ

2

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

EDIT:

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

Следующий пример создает C3381:

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

так избавиться от общественности ключевого слова, а затем повторите попытку компиляции.

+0

Я только что добавил некоторые подробности. – ccote

+0

Спасибо, что работает! – ccote

+0

Вы тоже можете проголосовать. –

0

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

+0

Этот проект является частью 10-проектного решения. Я просто не могу связать библиотеку noclr с моим проектом, я получил некоторые ошибки связывания. Я попытался связать эту библиотеку с проектом, который я создал, а не скомпилирован с/clr и содержит только вызов его функций, и он работает. Затем, когда я связываю этот промежуточный проект с моим первоначальным проектом, компилятор говорит, что он не может найти заголовок библиотеки noclr в промежуточном проекте. – ccote

Смежные вопросы