MS VC ++ как создать DLL без необходимости повторного копирования vc

Я пытаюсь создать простую оболочку .Net вокруг некоторого базового кода C ++.

Код C ++ не полагается ни на что в dll vcredist, поэтому мне интересно, могу ли я настроить свой проект, чтобы эти dll не работали?

Я бы не хотел, чтобы мои пользователи загружали и запускали vcredist только для того, чтобы работала простая DLL.


person Steffen    schedule 19.07.2009    source источник


Ответы (1)


Вам необходимо связать вашу DLL с опцией «Использовать CRT как статическую библиотеку»:

Свойства проекта / Конфигурация / C / C ++ / Создание кода / Библиотека времени выполнения / Многопоточный (т.е. не ни один из параметров «DLL»).

person RichieHindle    schedule 19.07.2009
comment
Это кажется правильным подходом, однако, когда я установил его в / MT, он жалуется, что это несовместимо с / clr - что, как я полагаю, необходимо для создания класса .Net (оболочка для собственного класса C ++) - person Steffen; 19.07.2009
comment
Ах, это, наверное, правда. Но если вашим пользователям нужен .Net, разумно ли предположить, что у них также будут соответствующие библиотеки DLL CRT? - person RichieHindle; 19.07.2009
comment
Что ж, у них, очевидно, будут библиотеки DLL CRT, это MSVCR90.DLL и тому подобное, о которых я беспокоюсь - специфические вещи VC ++. Если я попытаюсь запустить приложение, используя эту DLL как есть, оно будет жаловаться на то, что не находит MSVCR90.DLL :-( (Если вы не установили vcredist или Visual Studio) - person Steffen; 19.07.2009
comment
MSVCR90.DLL - это CRT DLL ... вы, вероятно, обнаружите, что у вас все в порядке, ничего не делая. Что нужно сделать, это настроить чистую виртуальную машину Windows, установить известные предварительные условия вашего программного обеспечения (.Net и все, что ему нужно), а затем попробовать свою DLL - это, вероятно, просто сработает. - person RichieHindle; 19.07.2009
comment
Хорошо, я плохо понимаю, что такое CRT DLL - то, что я имел в виду, было обычным материалом для .Net (mscorlib и т. Д.). Я устанавливаю чистую виртуальную машину Windows по мере написания и сообщу вам, работает она или нет. Раньше мне всегда приходилось устанавливать vcredist для запуска чего-либо, скомпилированного с VC ++. В любом случае буду держать вас в курсе :-) - person Steffen; 20.07.2009
comment
Я попробовал это сейчас, и он действительно работает на чистой виртуальной машине. Так что я думаю, решение - просто не беспокоиться об этом :-) - person Steffen; 21.07.2009
comment
Здорово! Моя любимая проблема - та, которой нет. 8-) - person RichieHindle; 21.07.2009