G ++ включает .rc файлы из cmd

Как пишет @amdluigi, «как правило, имя сборки такое же, как пространство имен, которое оно содержит, но не всегда».

В объекте System.Data.dll есть скриншот выше. Браузер в студии. Это отличный пример для изучения проблем здесь. Обратите внимание, что большинство пространств имен, содержащихся в сборке, являются System.Data или подпространством имен System.Data.

Как правило, для имен сборки должно быть связано с пространством имён , Обратите внимание, что когда Studio сначала создает проект для сборки сборки, одним из свойств проекта является пространство имен по умолчанию. Вначале Studio предоставляет пространство имен по умолчанию с тем же именем, что и сам проект. Если вы когда-нибудь захотите переименовать проект, подумайте об изменении своего пространства имен по умолчанию.

Есть два дополнительных пространства имен: Microsoft.SqlServer понятен. Некоторые типы SQL Server, которые они не хотели упаковывать в отдельную сборку.

Но что с System.Xml ???? Существует сборка System.Xml.dll. Почему это пространство имен также отображается в System.Data.dll?

Обратите внимание, что сборка может повторно открыть пространство имен и добавить к нему больше - это именно то, что System.Data.dll делает с системой. Xml namespace.

Причина в том, что пространства имен имеют нулевые значения производительности, но сборки очень много. Если у вас 1000 классов с большим количеством кода, вы не хотите, чтобы одна сборка имела очень большой объем памяти. Также вы не хотите 1000 сборок каждый с одним классом. Любая сборка должна быть загружена в память до того, как ее содержимое будет выполнено. Вы хотите, чтобы сборка содержала разумное количество взаимосвязанных классов, поэтому, как только ваше приложение загрузило сборку для получения одного из своих классов, она получит другие классы, которые, скорее всего, потребуются для приложения. Гранулярность важна: не слишком большая, не слишком маленькая, просто.

Обратите внимание, что System.Data.dll снова открывает System.Xml и добавляет ровно один класс: XmlDataDocument. Случается, что этот класс используется для интерпретации реляционных данных как XML-документа. Если ваше приложение просто использует XML, ему не нужен этот класс. Если ваше приложение имеет дело с реляционными данными, оно может. Таким образом, хотя XmlDataDocument наследуется от XmlDocument и находится в пространстве имен System.Xml, он упакован в сборку System.Data.dll.

Все это особенно важно, если у вас есть фон с Java, где есть только одна концепция, пакет. В .NET есть две, сборка и пространство имен. Эти два ортогональны. Очевидно, что сборка содержит более одного пространства имен. Сборка может снова открыть пространство имен и добавить к нему больше - другими словами, типы в пространстве имен могут охватывать более одной сборки.

0
задан snzm 16 January 2019 в 20:14
поделиться

1 ответ

.rc файлы не передаются в gcc, они должны обрабатываться windres (gcc эквивалент MS 'rc.exe), вы используете windres для создания .o файла из .rc и затем передаете его. o к gcc (или ld) как часть вашей последней стадии ссылки.

windres my_file.rc my_file.o
gcc -o my_final <other parameters> my_file.o

Есть и другие потенциальные аргументы для windres, посмотрите на man-страницу для деталей.

0
ответ дан SoronelHaetir 16 January 2019 в 20:14
поделиться
Другие вопросы по тегам:

Похожие вопросы: