Может ли проект DLL VS использовать / возвращать типы CLR? - PullRequest
1 голос
/ 02 июня 2011

Я пытаюсь закодировать библиотеку DLL, которая выполняет множество функций, включая ввод-вывод файлов, разбиение строк, обработку, вывод большого количества информации.Я использую VS2008, .net 3.5, C ++

Я следовал этой статье

http://msdn.microsoft.com/en-us/library/ms235636.aspx

Сначала я строю проект вызывающего (тестировщика) в решении и пытаюсьВызвать тестовую функцию в DLL, и это работает.Поэтому я продолжаю включать флаг компиляции CLR в DLL, чтобы упростить обработку строк.Но это дает мне ошибку ссылки.Я попытался включить флаг компиляции CLR в проекте вызывающей стороны, и внезапно у меня возникла ошибка двух ссылок.

Что мне нужно сделать, чтобы иметь возможность использовать CLR внутри DLL и иметь возможность возвращать результат как объект обратно вызывающей стороне?

Ответы [ 2 ]

0 голосов
/ 03 июня 2011

Поместите свои функции в

public ref struct

, а затем использование управляемых типов для параметров и возвращаемых значений становится очень простым.

Если вы хотите вызывать функции без создания объекта,сделать их статичными.

0 голосов
/ 03 июня 2011

Да, вы можете передавать типы CLR через плоские API на границе DLL. Но только другой код на основе C ++ / clr сможет их использовать. А поскольку для процесса существует только один IAT, это не всегда будет работать правильно, если у вас несколько доменов приложений.

Рекомендуемый способ передачи управляемых типов - через прямые управляемые ссылки.

Martyn

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...