Алекс Jenter - Программирование на Visual C++. Архив рассылки

Тут можно читать онлайн Алекс Jenter - Программирование на Visual C++. Архив рассылки - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на Visual C++. Архив рассылки
  • Автор:
  • Жанр:
  • Издательство:
    неизвестно
  • Год:
    неизвестен
  • ISBN:
    нет данных
  • Рейтинг:
    4.33/5. Голосов: 91
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Алекс Jenter - Программирование на Visual C++. Архив рассылки краткое содержание

Программирование на Visual C++. Архив рассылки - описание и краткое содержание, автор Алекс Jenter, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

РАССЫЛКА ЯВЛЯЕТСЯ ЧАСТЬЮ ПРОЕКТА RSDN, НА САЙТЕ КОТОРОГО ВСЕГДА МОЖНО НАЙТИ ВСЮ НЕОБХОДИМУЮ РАЗРАБОТЧИКУ ИНФОРМАЦИЮ, СТАТЬИ, ФОРУМЫ, РЕСУРСЫ, ПОЛНЫЙ АРХИВ ПРЕДЫДУЩИХ ВЫПУСКОВ РАССЫЛКИ И МНОГОЕ ДРУГОЕ.

Программирование на Visual C++. Архив рассылки - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на Visual C++. Архив рассылки - читать книгу онлайн бесплатно, автор Алекс Jenter
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать
Начнем с манифеста

Манифест – это метаданные, включающие информацию о сборке, а именно:

• Данные о версии– версию, имя и необязательные данные.

• Список файлов– имена файлов, составляющих сборку, а также их контрольные суммы, вычисляющиеся при помощи криптографических хэш-функций во время создания сборки. Во время выполнения данные файлы проверяются по контрольным суммам, чтобы удостоверится в целостности данного файла, а так же в том, что файл не был подменён другим с таким же именем или просто его новой версией.

• Зависимости от других сборок– имена и версии сборок, которые используются данной сборкой. Во время выполнения версии сборок строго сверяются, чтобы удостовериться в том, что загружена именно нужная сборка.

• Экспортируемые типы и ресурсы.Видимость для этих объектов может быть двух типов: только для моей сборки ( internal) и для всех ( public), включая внешние запросы.

• Свойства защиты.Здесь можно выделить три типа:

• Права на запуск данной сборки.

• Некоторые возможности сборки будут недоступны, если она не лицензирована.

• Сборка должна запускаться только в том случае, если она лицензирована.

ПРИМЕЧАНИЕ

Список файлов, из которых состоит сборка, и зависимости от других сборок – это совершенно разные вещи. Сборка сама по себе может быть разбита на несколько файлов, хотя для тех, кто ее использует, она будет выглядеть как единое целое. То есть, к примеру, общие классы могут лежать в одном файле, ресурсы – в другом, специальные классы – в третьем файле и так далее. Для чего, спрашивается, это нужно? Во-первых, это нужно для гибкой загрузки распределенных приложений, так как файлы, составляющие сборку, могут загружаться по мере необходимости, а не все сразу. Во-вторых, для создания распределённых приложений, так как местоположение файлов не играет никакой роли: файлы из одной и той же сборки могут находиться где угодно: в Интернете, на сетевых дисках и так далее.

Настало время "поработать руками"

Для начала проверьте, правильно ли у вас настроены пути к Visual Studio.Net . Чтобы правильно настроить пути, вам всего лишь необходимо вызывать при загрузке (ну или как вам нравиться) файл vsvars32.bat , который расположен в директории …Microsoft Visual Studio.NET\Common7\Tools\ .

Давайте взглянем на пример который впоследствии нам предстоит скомпилировать и изучать.

• Visual Basic.NET

'File: Some.vb

'Author: Copyright (C) 2001 Dubovcev Aleksey

Imports System

Public Class App

Public Shared Sub Main()

Console.WriteLine("Hello World")

End Sub

End Class

• C#

/* File: Some.cs Author: Copyright (C) 2001 Dubovcev Aleksey */

using System;

public class Application {

public static void Main() {

Console.WriteLine("Hello World");

}

}

• Managed Visual C++

/* File: Some.cpp Author: Copyright (C) 2001 Dubovcev Aleksey */

#using

using namespace System;

void main() {

Console::WriteLine("Hello World");

}

Теперь, когда вы построили exe файл, запускайте утилиту ildasm.exe(Intermediate Language Disassembler – дизассемблер промежуточного языка) следующим образом:

ildasm.exe /adv HelloWorld.exe

Параметр командной строки /advоткроет дополнительные пункты меню, которые понадобятся нам позднее. Полную информацию о данной утилите вы сможете найти в .NET Framework Sdk.

Рис 1 Вы должны увидеть то же самое что и на рисунке Древовидная структура - фото 27

Рис. 1

Вы должны увидеть то же самое, что и на рисунке. Древовидная структура (далее просто дерево) показывает вам сборку изнутри.

[…]

ПРИМЕЧАНИЕ

Тип по значению (Value Type) задается ключевым словом struct и отличается от класса тем, что размещается в стеке, а не в динамической памяти.

Поэкспериментируйте немного с ildasm, чтобы привыкнуть к этой программе. Не пугайтесь при виде каких ни будь непонятных данных, дальше будет еще страшнее. :)

Теперь откройте манифест (manifest) и внимательно посмотрите. Ниже я привожу содержание манифеста, полученное мной при помощи утилиты ildasm.

// Microsoft (R) .NET Framework IL Disassembler. Version 1.0.2914.16

// Copyright (C) Microsoft Corp. 1998-2001. All rights reserved.

// VTableFixup Directory:

// No data.

//Это ссылка на основную библиотеку классов .NET

.assembly extern mscorlib {

//Это хеш публичного ключа данной сборки

//он нужен для подтверждения валидности сборки

.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..

//Версия сборки которая использовалась при создании приложения

.ver 1:0:2411:0

}

//Описание нашей сборки

.assembly Some {

// – The following custom attribute is added automatically, do not uncomment –

// – Следующий атрибут добавлен автоматически, не убирайте комментарий

// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,

// bool) = ( 01 00 00 01 00 00 )

//Алгоритм по которому считается хэш

.hash algorithm 0x00008004

//Версия нашей сборки

.ver 0:0:0:0

}

//Название запускаемого файла

.module Some.exe

// MVID: {2FA89A98-AD9F-4E31-8DB1-AB1FFB64A4F4}

//Предпочтительный адрес для загрузки сборки

.imagebase 0x00400000

//Подсистема (консоль, оконное приложение, приложение времени загрузки)

.subsystem 0x00000003

//Выравнивание секций

.file alignment 512

//Зарезервированный флаг

.corflags 0x00000001

Что, вам кажется, что это полная чушь? Ошибаетесь, если в этом разобраться, что, кстати, не так уж и трудно, то вам откроется много очень полезной и порой необходимой информации. В начале вы увидите записи со словами .assembly extern, которые описывают зависимости от внешних сборок, необходимых для функционирования этой программы. А данные, идущие далее в блоке, заключённом в фигурных скобках, описывают версию и контрольную сумму сборки. Эти данные берутся из сборок при компиляции программы, что гарантирует использование именно тех сборок, которые использовались при компиляции и тестировании. Далее следует .assembly, но уже без модификатора extern. С этой директивы и начинается описание нашей с вами сборки. Как вы могли догадаться, .verописывает версию нашей сборки. Ну а .hash algorithmопределяет функцию, по которой будет вычисляться хэш, но об этом я расскажу позднее. Затем идут описания имени самого модуля, подсистемы исполнения, информация о выравнивании секций и еще некоторые данные. Полная документация по этому вопросу находится в Framework SDK. Более подробно об устройстве манифеста я расскажу далее.

ПРИМЕЧАНИЕ

На самом деле, .publickeytokenописывает не контрольную сумму файла, а является хэшем (контрольной суммой) публичного ключа автора, создавшего сборку, на которую ссылается ключ .assembly extern.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Алекс Jenter читать все книги автора по порядку

Алекс Jenter - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на Visual C++. Архив рассылки отзывы


Отзывы читателей о книге Программирование на Visual C++. Архив рассылки, автор: Алекс Jenter. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x