Interop что это за программа

.NET Interop на примере работы с сокетами

У нас есть множество технологий. Одни неимоверно быстры, другие неимоверно удобны. Одни позволяют летать со скоростью света, другие позволяют разрабатывать со скоростью света.

Споры насчёт того, какой же подход лучше, утихают редко. Сейчас я покажу, как можно скрестить ежа с ужом. У нас есть .NET, которым можно быстро делать и есть Native, который может быстро делать.

В образовательных целях мы будем скрещивать эти два направления. У статьи есть ещё одна цель. В её основе лежит написанная мною и Arwyl’ом программа под названием DuSter. Эта программа представляет собой сервер-пустышку, который позволяет тестировать сетевые программы.

Сервер очень прост в использовании, достаточно гибко настраивается, поддерживает файлы описания протоколов, которые позволяют более-менее автоматизировать тестирования работы любых протоколов. Я занимался разработкой сетевого уровня, мой друг — бизнес-логикой и парсингом протоколов. Получилось что-то неимоверно хорошо вылизанное и приятное. Мы гордимся своей программой, и хотим предоставить её сорцы миру, для некоммерческого использования.

c# — это просто. Работа с Excel файлом через Interop.Excel



Существует CLR — Common Language Runtime, среда, которая позволяет выполнять программы, написанные на языках, поддерживающих CLI (Common Language Infrastructure). Всё это дело + компиляторы и библиотеки образует .NET Framework, одну из самых распространённых сред разработки в мире. Я не буду рассказывать о том, как работают программы, написанные на .NET, поскольку эта тема достойна ещё пары статей.

Скажу лишь основную вещь, необходимую для нашей статьи. Машинный код .NET и машинный код Native (Не-.NET) приложений это не одно и то же. Соответственно, выходит интересная штука: мы можем взять одно Native приложение, написанное на языке Assembler, и взять другое Native приложение, написанное я языке Pascal, и скрестить их вместе. Это достаточно просто. Нам давали такое задание в универе.

Я, следуя своей любопытной натуре, решил выпендриться. Я решил скрещивать Assembler и C#. Я думал, что всё будет просто, я возьму, да и впишу в C# код ассемблера. Как же я ошибался. Естественно, узнав про то, что такое MSIL, я понял, что затея была не лучшая, но сдаваться не хотелось.

Я долго искал выход из этой ситуации — и нашёл: PInvoke через DllImport.

И так, мы имеем — программу на языке .NET, которая работает с использованием среды исполнения .NET. Задача, сделать так, чтобы среда исполнения дёргала внешние библиотеки. Что же, ещё немного усложним задачу — пусть программа позволит работать с сокетами на основе Windows Socket 2.0.

Когда у нас в институте было сетевое программирование, нас заставляли писать с использованием WS2, но мы, как заядлые шарписты воротили нос от этой библиотеки, так как в сравнении с библиотекой System.Net.Socket WS2 — это жалкая пародия на код.
Мы долго искали компромиссы с нашим преподом, и в итоге пришли к следующему: Нам позволяют использовать .NET при условии, что WS2 мы будем дёргать через DllImport.

Мир, Дружба, INTEROP

Приступим, и сразу перейдём к разбору кода:

[DllImport( «ws2_32.dll» , CharSet = CharSet.Auto, SetLastError = true )]
public static extern Int32 accept( Int32 socketHandle, ref SocketAddres socketAddress, ref Int32 addressLength);

[DllImport( «ws2_32.dll» , CharSet = CharSet.Auto, SetLastError = true )]
public static extern Int32 bind( Int32 socketHandle, ref SocketAddres socketAddress, Int32 addressLength);

[DllImport( «ws2_32.dll» , CharSet = CharSet.Auto, SetLastError = true )]
public static extern Int32 listen( Int32 socket, Int32 queue);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 WSAStartup(Int16 wVersionRequested, ref WSADATA lpWSAData);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern String inet_ntoa( Int32 inadr);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 inet_addr( String addr);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 WSACleanup();

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 WSAGetLastError();

[DllImport( «ws2_32.dll» , SetLastError = true , CharSet = CharSet.Ansi)]
public static extern Int32 gethostbyname( String name);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 socket( Int32 af, Int32 type, Int32 protocol);

[DllImport( «ws2_32.dll» , SetLastError = true )]
public static extern Int32 closesocket( Int32 socket);

* This source code was highlighted with Source Code Highlighter .

Это код на C#, он делает простую и очевидную вещь. Обращаясь к стандартной для Windows библиотеке ws2_32.dll он импортирует указатели на вышепреведённые методы в .NET. То есть, с виду получается следующее — я позволяю своей программе использовать Native методы.

Основные методы уже есть в программе — осталось привести их в порядок.

Что меня всегда раздражало в библиотеке WS2 — так это способы возвращения ошибок, и чтения информации. Я очень опасливо отношусь к методам, которые возвращают значение прочитанных байт и -1 в случае ошибки. Тем более, мне не нравится после получения результата -1 делать GetLastError, чтобы понять, в чём была ошибка. Механизм раскрутки стэка исключений, который присутствует в .NET намного больше удовлетворяет моим эстетическим требованиям.

Если вы не знали, хотел бы заметить, что такой способ обработки ошибок — это специфика WinAPI. В нем все (или большинство) функции возвращают коды ошибок, в том числе через HRESULT, 0, -1… Ну а GetLastError — это вовсе как раз системная функция созданная для того, чтобы понять что собственно произошло.

Собственно, переход на обработку ошибок через исключения — это одно из ключевых особенностей платформы .net. В момент выхода этот момент широко рекламировался, позиционировался как решение проблемы разнообразия и бардака с кодами ошибок.

* если вы это знали, то, надеюсь, информация пригодится тем, кто не знал

Поэтому — следующий наш шаг был таков: Привести механизм работы с сокетами на уровень .NET приложений. Что для этого надо?

Читайте также:
Что за программа saver not

Для начала — соберём все константы, которые есть в Native приложениях в enum’ы, чтобы они не болтались где не надо.

* This source code was highlighted with Source Code Highlighter .

Далее — методы, экспортированные нами из WS2 работают с переменными, которых не существует в среде .NET. Поэтому, необходимо было немного поизвращаться с технологией маршалинга, чтобы свести концы с концами:

[StructLayout(LayoutKind.Sequential)]
public struct SocketAddres
public Int16 sin_family;
public UInt16 sin_port;
public Int32 sin_addr;

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
public String sin_zero;
>

* This source code was highlighted with Source Code Highlighter .

Эта структура позволяет вам оперировать адресом удалённого хоста.

В результате — мы имеем полный импорт библиотеки WS2 в .NET. Это круто, но мы сочли это недостаточным. Потому что пользоваться этой библиотекой жутко неудобно. Поэтому, имея под рукой WS2 методы, мы начали разрабатывать класс NSocket. Первым шагом, было создание наипростейшего класса исключений.

Потому что работа с сетью проблемами полнится, и сообщать об этих проблемах необходимо разработчику. А в .NET самый лучший способ сообщить об ошибке — это кинуть Exception.

///
/// Класс обработки исключения сокета
///
public class NSocketException : System.Net.Sockets.SocketException

* This source code was highlighted with Source Code Highlighter .

Этот класс является простой обёрткой, которая позволяет сообщать об ошибках. Отлично, ошибки у нас уже есть, теперь надо сделать то, что бы их кидало. Для этих целей написано ещё 2 класса. NSocket и NNet. Эти классы производят основную работу с сетью.

Если класс NNet больше заточен для работы с сетью, то NSocket представляет собой объектно-ориентированное представление сокета (то, чего больше всего не хватает мне в WS2).

///
/// Принять входящее соединения на данном сокете.
///
/// Привязанный сокет, по которому надо получать соединение
/// Указатель на подключившейся сокет
public static NSocket Accept(NSocket bindedSocket)
WS2_NET.SocketAddres n = new WS2_NET.SocketAddres();
Int32 toref = Marshal.SizeOf(n);
NSocket s = new NSocket(WS2_NET.accept(( Int32 )bindedSocket, ref n, ref toref));
s.Connected = true ;
return s;
>

* This source code was highlighted with Source Code Highlighter .

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

///
/// Содзание нового сокета.
/// Сокет будет автоматически создан для IPv4
///
/// Тип сокета
/// Протокол сокета
public NSocket(NSocketType type, NProtocol proto)
if ( this .Disposed)
throw new InvalidOperationException( «Component is disposed» );
socket = WS2_NET.socket(2, ( Int32 )type, ( Int32 )proto); // 2 = AIF_INET
if ( this .HasError)
throw new NSocketException(WS2_NET.WSAGetLastError());
this .Closed = false ;
this .Protocol = proto;
this .SocketType = type;
>

* This source code was highlighted with Source Code Highlighter .

А это — конструктор класса NSocket, который инициализирует новый экземпляр сокета.

Что мы имеем на выходе?
Да, признаться честно — я не очень-то хорошо тогда разбирался в .NET, поэтому в реализации классов есть кое-какие огрехи, но в общем — мы создали с нуля работу с сокетами за 1 неделю не очень напряжённой работы. Следует учесть, что здесь мы проследили эволюционный путь от Native WS2 к .NET Objects.

Действительно, задача является несколько невостребованной, потому что в .NET существуют не только отличные классы работы с сокетами, но и классы, реализующие серверы и клиенты популярных протоколов. Я уже не говорю о такой штуке, как WCF — одного из столпов .NET 3.0, который позволяет связывать программы по сети, не требуя знания о сокетах. Но! Для целей этих гигантов, которые избавляют сетевых программистов от проблем, трудятся забытые всеми WS2. Изучить их было бы неплохо, чисто для понимания.

В реальной программе, которую мы вам отдаём кода в десятки раз больше. Мы очень старались и писали комментарии к каждому методу, чтобы во всём этом можно было разобраться.

В итоге, работа с сокетами превратилась в песню:

try
NetModule.NNet.StartWS();
if (CurrExemp.SocketProtocol == NetModule.NProtocol.Tcp)
CurrExemp.Socket = new NetModule.NSocket(NetModule.NSocketType. Stream , CurrExemp.SocketProtocol);
else
CurrExemp.Socket = new NetModule.NSocket(NetModule.NSocketType.Datagram, CurrExemp.SocketProtocol);
CurrExemp.Socket.Bind(CurrExemp.Port);
if (CurrExemp.SocketProtocol == NetModule.NProtocol.Tcp)
CurrExemp.Socket.Listen();
>
catch
if (CurrExemp.ClientSocket != null CurrExemp.ClientSocket.Connected)
CurrExemp.ClientSocket.Close();
if (CurrExemp.Socket != null CurrExemp.Socket.Binded)
CurrExemp.Socket.Close();
if (NetModule.NNet.Started)
NetModule.NNet.StopWS();
MessageBox.Show( «Can’t create socket on specified port!» );
return ;
>

* This source code was highlighted with Source Code Highlighter .

Данный код показывает, как просто запустить новый сервер, для протоколов TCP или UDP. Нет необходимости проводить множество проверок, которые нужны для WS2.

Используя эту информацию этой статьи, вы можете начать создавать свои приложения, которые, например, будут использовать библиотеку OpenGL. Хотя, нет, не стоит, такая библиотека уже существует.

Ну, можно попытаться ускорить ваше приложение, используя вычисления на очень сложном и быстром Assembler’е. Могу даже сказать, как это просто сделать. MASM32 Тут вы найдёте восхитительный пакет для работы на асме под Windows. Он позволяет вам экспортировать ваш код на ассемблере в виде стандартных библиотек, которые вы можете подключить в свои .NET приложения.

Ещё можно написать программу для взаимодействия с COM портами или USB интерфейсами, с ядром на С/С++ а лицом на C#. Я думаю, многие согласятся, что программировать интерфейсы на C# намного удобнее, чем на чистом С.

А, ну и самое главное: Все исходные коды работы с сокетами, бизнес-логики XML и сам сервер для тестирования сетевых приложений я пока разместил здесь

Ну вот, это и есть мой рассказ о том, как можно скрестить ежа с ужом.

Источник: habr.com

Interop Tools – редактор реестра для Windows 10 Mobile

Interop Tools – редактор реестра для Windows 10 Mobile

С самого начала своего существования, операционная система Windows Phone славилась своей безопасностью и стабильностью. Всего этого удалось добиться закрытостью операционной системы. Первые её версии даже не могли передавать файлы по Bluetooth и предоставлять свободный доступ к памяти, где хранились все пользовательские файлы. В это же время конкурент в лице Android мог предоставить своим пользователям полную свободу действий. Windows 10 Mobile переняла от своей предшественницы безопасность, но при этом открыла несколько возможностей, которые интересны энтузиаста, любящим покопаться в реестре и вручную внести изменения в операционную систему.

Interop Tools – редактор реестра для Windows 10 Mobile

Довольно известный энтузиаст и мастер, обитающий на форуме XDA-Developers под ником Gustave M., несколько месяцев собирал утилиту для Windows 10 Mobile, выступающую в роли редактора реестра. Он назвал её Interop Tools и наделил возможностями, которые недоступны официально пользователям Windows 10 Mobile: просмотр и редактирование ключей реестра, а также доступ к файлам системы по протоколу SFTP.

Читайте также:
Root browser что это за программа

Перед тем, как приступить к процедуре установки и редактирования реестра, убедитесь в том, что вам этой действительно необходимо. Ведь в некоторых случаях изменения, внесённые в реестр Windows 10 Mobile, могут причинить вред данной операционной системе или же вывести из строя сам смартфон. Поэтому позаботьтесь о том, чтобы на вашем компьютере также была установлена программа Windows Device Recovery Tool, которая в любой момент может восстановить работу устройства.

Как скачать и установить Interop Tools на Windows 10 Mobile

1. На смартфоне перейдите в «Параметры» > «Обновление и безопасность» > «Для разработчиков» и включите «Режим разработчика».
2. Скачайте InteropToolsApp_0.0.2.0_arm.appxbundle в память своего смартфона.
3. Запустите приложение «Проводник» и отыщите скачанный АРРХ-файл. Он должен находиться в папке «Загрузки» или «Downloads».
4. Нажмите на InteropToolsApp_0.0.2.0_arm.appxbundle и в появившемся диалоге тапните по кнопке «Установить» или «Install».
5. Подождите несколько секунд и перейдите в «Параметры» > «Дополнения» и запустите «Interop Tools».
6. Готово. Теперь вы можете вносить изменения в редактор реестра, которые активно обсуждаются различными разработчиками и энтузиастами на форуме XDA-Developers.

Источник: windows-phone-7.su

Как установить Interop Tools на ПК и смартфоны с Windows 10

Среди продвинутых пользователей Windows 10 довольно известной является программа Interop Tools. В числе её функциональности можно отметить получение полного доступа к реестру на ПК и смартфонах, возможность сделать Interop Unlock на Lumia или применить какие-нибудь твики. На данный момент это приложение доступно для скачивания в Windows Store, однако для его корректной работы необходимо выполнить некоторые дополнительные операции. Именно об этом мы расскажем в данной статье.

Как установить Interop Tools на Windows 10 Mobile

В Windows 10 Mobile Interop Tools является единственным качественным приложением, с помощью которого можно быстро сделать Interop Unlock, а также редактировать ключи реестра. Программа работает на Windows 10 Mobile версии 1511 и выше.

interoptools11_2

  1. Скачайте архив с зависимостями и само приложение с нашего сайта (последнее обновление — 25.11.2017).
  2. Распакуйте архив с зависимостями в какую-нибудь папку в памяти телефона или SD-карты. Можно воспользоваться бесплатным архиватором 7-Zip на компьютере и передать файлы на смартфон. Можно использовать приложения для Windows 10 Mobile, вроде 8 Zip, чтобы распаковать архив прямо на устройстве.
  3. Пройдите в Параметры — Обновление и безопасность — Режим разработчика.
  4. Включите режим разработчика, поставив соответствующую галочку.

interop-tools-3

  • Установите Appx-файлы Interop Tools (в том числе из папки Dependencies), которые находятся в распакованном архиве. Можно воспользоваться любым способом установки программ из статьи, на которую приведена ссылка.
  • Откройте установленную программу Interop Tools.
  • Примите лицензионное соглашение, нажав кнопку Accept.
  • Кликните Next, изучив (если нужно) нововведения в этой версии IT.
  • Чтобы все функции приложения корректно работали, выберите пункт This Device (а не This device (through provider extensions) и нажмите Use the selected provider. Учтите, что проделывать это придётся при каждом запуске Interop Tools.
  • На многих устройствах эффекты прозрачности (Fluent Design) могут подтормаживать. Если вы хотите отключить их, откройте шторку, перейдите в раздел Settings, поставьте галочку Fallback to the MDL2 Application Theme и перезагрузите программу. Там же можно отключить требование пароля при открытии программы (галочка Require authentication at start up в самом верху).

    interop-tools-4

    Теперь вы можете сделать Interop Unlock и пользоваться всеми возможностями Interop Tools.

    Как установить старую версию Interop Tools на Windows 10 Mobile

    Новые версии Interop Tools, инструкция по установке которых была представлена выше, на данный момент могут быть не очень стабильны. Вы можете воспользоваться старыми версиями IT, которые работают лучше. Ссылки на установочные файлы старых версий Interop Tools:

    • Interop Tools 1.9.390.0 (одна из самых стабильных)
    • Interop Tools 1.9.400.0
    • Interop Tools 1.9.437.0
    • Interop Tools 2.0.78.0

    Ссылка на архив с зависимостями (одинаков для этих версий IT):

    Способ установки абсолютно аналогичен описанным выше.

    Как установить Interop Tools на компьютер с Windows 10

    Interop Tools выглядит гораздо привлекательнее стандартного редактора реестра в Windows. Здесь и красивый дизайн, и дополнительные функции.

    interoptools8

    1. Скачайте архив с зависимостями (ссылка на 32-битный, 64-битный) и само приложение с нашего сайта (последнее обновление — 25.11.2017).
    2. Скачайте и установите сертификат Interop Tools.
    3. Распакуйте архив с зависимостями.
    4. Кликните два раза на каждый из файлов в полученной папке и установите его.
    5. Установите само приложение таким же образом.

    Как установить Interop Tools на компьютер с Windows 10 из Windows Store

    К сожалению, Microsoft удалила Interop Tools из Магазина. По состоянию на 25.11.2017 его оттуда загрузить не получится. Разработчик прорабатывает решение проблемы, но о сроках появления программы в Microsoft Store на данный момент ничего не известно.

    Данный способ может и не сработать (вам понадобятся новые версии провайдеров), а указанная версия Interop Tools всё ещё в активной разработке.

    1. Откройте страницу приложения в Windows Store, перейдя по данной ссылке. Если вы будете переадресованы на главную страницу сайта Microsoft Store, скопируйте следующую ссылку, вставьте её в адресную строку Microsoft Edge и нажмите Enter:
      ms-windows-store://PDP/?ProductId=9ntgwlc0d3cs
    2. Нажмите Установить и дождитесь окончания процесса.
      interoptools1
    3. Скачайте архив с провайдером с нашего сайта по данной ссылке.
    4. Распакуйте архив в какую-нибудь папку любым архиватором, например, бесплатным 7-Zip. Архив будет содержать в себе папку с провайдером RegistryRT.
    5. Кликните по файлу Add-AppDevPackage.ps1 правой клавишей мыши и выберите пункт Выполнить с помощью Powershell.
      interoptools3
    6. Подтвердите временное изменение политики безопасности, нажав Y (латинская буква английской раскладки клавиатуры), после чего Enter.
    7. Установите сертификат разработчика, нажав A (кириллическая буква русской раскладки клавиатуры) и Enter.
      interoptools4
    8. Дождитесь окончания установки.
    9. Запустите Interop Tools и откройте раздел This Device.
      interoptools5
    10. Поставьте галочку напротив пункта Select the best provider automatically и нажмите Ok.
      interoptools6

    Готово, теперь вы можете использовать Interop Tools для доступа к реестру.

    Что делать, если при установке провайдера возникает ошибка

    Иногда случается, что Windows не может установить дополнение в обычном режиме, с помощью Powershell. В таком случае вам следует сделать это вручную.

    1. Пройдите в папку с провайдером RegistryRT (InteropTools.Providers.Registry.RegistryRTProvider), затем в директорию Dependencies.
      interoptools7
    2. Выберите папку x86.
    3. Установите одно из дополнений. Для этого кликните два раза на файл Microsoft.NET.Native.Framework.1.3.appx и нажмите кнопку Установить.
      interoptools8
    4. Дождитесь окончания процесса установки и закройте окно.
      interoptools9
    5. Проделайте эти же операции с файлами Microsoft.NET.Native.Runtime.1.4.appx и Microsoft.VCLibs.x86.14.00.appx.
    6. Если у вас установлена 64-битная система, вернитесь в папку Dependencies, откройте каталог x64 и установите файлы из него таким же образом.
    7. Вернитесь в основной каталог провайдера RegistryRT.
    8. Установите провайдера InteropTools.Providers.RegistryRTProvider.App_1.0.4.0_x86_x64_arm.appxbundle.
      interoptools10
    9. Перейдите к 9-ому шагу инструкции выше.
    Читайте также:
    Программа стирки забота о здоровье что это

    Связь с разработчиком Interop Tools

    Мы не являемся разработчиками данного приложения. Но у вас может возникнуть необходимость в связи с создателем Interop Tools, поэтому мы оставим вам его контакты:

    Как показала практика, создатель Interop Tools благодарен подробным сообщениям об ошибках. Учтите, что вашу превосходную русскую речь он вряд ли оценит, поэтому свои отзывы и обращения стоит отправлять на английском языке.

    Источник: wp-seven.ru

    Вопрос по библиотекам Interop

    есть проект в котором используются определьоний набор библиотек(AxInterop.MapXLib.dll,Interop.Excel.dll, Interop.MapXLib.dll,Interop.Microsoft.Office.Core. dll,Interop.VBIDE.dll)
    проект достался в наследство от предидущего разработчика.
    тепер нужно етот проект внедрить в другой но возник вопрос: где ети библиотеки взять.
    можна ли использовать те библиотеки которие находятся в старом проекте(не возникник проблем с их расположением)?

    __________________
    Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
    94731 / 64177 / 26122
    Регистрация: 12.04.2006
    Сообщений: 116,782
    Ответы с готовыми решениями:

    Interop.Microsoft.Office.Interop.Excel
    Добрый день! Собственно есть Win10, Visual Studio 2019, есть MS Office 2007 с установленным.

    STM32+TIC154. Вопрос по библиотекам
    Есть плата Dyscovery с STM32 и дисплей TIC54 на МК PCF8535. Связь по I2C. На просторах интернета.

    Документация к библиотекам
    Написал библиотеку в которой 1 метод using System; namespace ClassLibrary1 < public class.

    Эксперт С++

    2343 / 1716 / 148
    Регистрация: 06.03.2009
    Сообщений: 3,675

    wormsad, interop библиотеки генерятся автоматически, и это .Net, поэтому не .Net’ий язык использовать не получится. COM Interop.

    Videor venisse
    128 / 109 / 6
    Регистрация: 19.02.2010
    Сообщений: 221

    Могут возникнуть проблемы с местом расположения этих библиотек, поэтому пути к ним необходимо переназначить:
    1) открыть проект
    2) открыть форму
    3) навести мышь на вкладку toolbox
    4) на вкладке toolbox вызвать контекстное меню
    5) в контекстном меню выбрать команду Choose items…;
    6) в появившемся окне «Choose Toolbox items» перейти на вкладку «COM Components» и кликнуть на кнопке «Browser…» и далее выбрать места хранения каждой библиотеки, нажать «ОК» и выбранный компонент появится в Toolbox.
    Это касается в основном нестандартных для .NET библиотек.

    Регистрация: 01.08.2010
    Сообщений: 9

    тоесть сначала их нужно добавить в проект а потом проделать ети манипуляции ?
    проект написан на С# и работаю в MS Visual Studio 2008

    Добавлено через 11 минут
    и как правельнее добавлять? сначала скопировать в папку проекта или просто через меню добавить

    Эксперт С++

    2343 / 1716 / 148
    Регистрация: 06.03.2009
    Сообщений: 3,675

    wormsad, blazonic расписал то, что нужно сделать. Попробуй. Перечисленные тобой библиотеки просто обертки, которые сгенерятся автоматически при добавлении нужного компонента COM.

    Регистрация: 01.08.2010
    Сообщений: 9

    как понять обертки?
    попробовал зделать как сказал blazonic но видает ошибку не удается загрузить библиотеку типо»**.tlb»

    Videor venisse
    128 / 109 / 6
    Регистрация: 19.02.2010
    Сообщений: 221
    попробовал зделать как сказал blazonic но видает ошибку не удается загрузить библиотеку типо»**.tlb»

    Попробуй поисковиком операционки найти по всем дискам требуемый tlb-файл, а потом перенести его в ту папку, где находится основная библиотека (та, которую ты пытаешься погрузить в проект).

    Эксперт С++

    2343 / 1716 / 148
    Регистрация: 06.03.2009
    Сообщений: 3,675
    как понять обертки?

    Берется сервер COM, по его библиотеки типов генерится сборка содержащая классы-обертки компонентов данного сервера. Из управляемого кода ты обращаешься к сгенеренным оберткам, а они в свою очередь обращаются к COM серверу. Т.е. это некий промежуточный слой, который отвечает за взаимодействие управляемого кода и COM сервера.

    Регистрация: 01.08.2010
    Сообщений: 9
    и вобще зачем добавлять их на панель елементов?

    Эксперт С++

    2343 / 1716 / 148
    Регистрация: 06.03.2009
    Сообщений: 3,675
    и вобще зачем добавлять их на панель елементов?
    Не за чем. Их нужно добавить в References.

    Videor venisse
    128 / 109 / 6
    Регистрация: 19.02.2010
    Сообщений: 221

    Да, те библиотеки, которые не предполагают визуального отображения на форме добавляются в проект следующим образом:
    1) в проекте на References вызвать контекстное меню и выбрать команду Add Reference…
    2) в появившемся окне «Add Reference» перейти либо на вкладку «COM» и найти библиотеку в списке, либо на вкладку «Browse» и найти библиотеку в каталогах.

    Регистрация: 06.05.2010
    Сообщений: 180

    Проблем из- за этих библиотек не будет, если на компьютере, на котором запускается это приложение установлены все ком- объекты. Эти интероп-библиотеки генерятся по счтету раз при помощи Visual Studio, и они, как правильно сказали, всего лишь обертки над настоящими ком-объектами, для того чтобы к ним можно было обращаться из .НЕТ

    Можно сгенерить их заново, можно подключить из старого проекта уже готовые (это проще), как написано в предыдущем посте. И при том и при другом варианте они автоматически скопируются в выходрую папку приложения, ничего делать больше не надо. Подключение готовых интероп-библиотек не гарантирует, что связанные с ней ком объекты установлены и программа будет работать. Можно писать код, студия будет компилировать его без ошибок, но если ком объекты не установлены, при первом обращении к интероп-библиотеке во время выполнения вылетит бага «нет объекта с таким-то PSID».

    На тулбар добавлять обычные невизуальные классы никчему. Это надо проделать как написано в предыдущем посте через ПроектСсылки.

    Всякие .tlb тоже ни к чему копировать. Они должны лежать, где лежали, где-то в Систем32 или в папке того приложения, которое публикует Ком-объекты. Там находится их описание в ком-формате. Их студия использует один раз, когда генерит свою .НЕТ обертку и потом они ей уже не нужны.

    87844 / 49110 / 22898
    Регистрация: 17.06.2006
    Сообщений: 92,604
    Помогаю со студенческими работами здесь

    Литература по библиотекам
    Подскажите где можно почитать про функции библиотек, как они записываются и т.д. Очень интересует.

    Путь к библиотекам
    Подскажите плиз. Я ,как говориться, ещё только учусь .Так вот у меня книга по паскалю 7,0 , на.

    Распределение функций по библиотекам
    Всем привет! Работаю сейчас в CodeBlocks 16 под Ubuntu 18.04. Частенько возникает задача.

    Путь к qt библиотекам qt creator
    учу qt по книге шлее qt 4.8. Так вот первая программа: #include <QtGui> int main(int agrc.

    Источник: www.cyberforum.ru

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru