Сообщество программистов Autodesk в СНГ

ADN Club => ObjectARX => Тема начата: Алексей (IdeaSoft) от 19-07-2016, 11:10:02

Название: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 19-07-2016, 11:10:02
Подскажите или дайте ссылку с описанием как подключить сборки .net autocad api в среде проекта с++
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 19-07-2016, 13:20:38
в среде проекта с++
В среде какого проекта C++? Если native C++, то никак. А в managed C++ при помощи директивы #using:
Код - C++ [Выбрать]
  1. #using <acdbmgd.dll>
  2. #using <acmgd.dll>

Цитировать
Компилятор будет искать ссылки по следующим путям:

    Путь, заданный в директиве #using.

    Текущий каталог.

    Системный каталог .NET Framework.

    Каталоги, добавленные при помощи параметра компилятора /AI.

    Каталоги, указанные в переменной среды LIBPATH.
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 01:16:35
managed C++
А проект managed C++ с чего начать?
 К примеру для теста
1) Я создал проект консольного приложения
2) Переменной среды LIBPATH - задал путь где лежать acdbmgd.dll ... и другие
3) \Свойства проекта\Свойствах конфигурации\Общее\
     Поддержка общеязыковой среды выполнения = "Поддержка CLR-среды (/clr)" CLI в моей студии нет
И пишет ошибка С 1107 Не удается найти указанный файл сборки

У меня:
Visual Studio 2012 Professional
Может что-то в настройках еще нужно указать?
Сборки подключаю от 2012 AutoCAD 64x
Мне обязательно подключить сборки Net FrameWork 4.5?

Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 20-07-2016, 01:24:08
1) Я создал проект консольного приложения
Сразу мимо. Создавать нужно проект при помощи ObjectARX Wizard (для соответствующей версии) и указать в нём поддержку .NET:

(https://adn-cis.org/forum/proxy.php?request=http%3A%2F%2Fimg-fotki.yandex.ru%2Fget%2F48069%2F7842324.6%2F0_12e3b5_f302dfe_orig.png&hash=964ae0e2fd0fe62d227463c1eda27c90)

Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 01:33:04
#using <acdbmgd.dll>#using <acmgd.dll>
Через #using <...> так и не получилось. Просто подключил сборки.
и использую пространства имен.
Код - C++ [Выбрать]
  1. using namespace Autodesk::AutoCAD::DatabaseServices;
только вот С++ не разрешает задать сое имя пространству имен
к примеру я хочу задать имя CAD_DBS как это делал раньше на VB

А и еще какой тег использовать для оформления кода С++?
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 01:38:28
и помощи ObjectARX Wizard
А этот Визард где скачать?
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 20-07-2016, 01:52:19
А и еще какой тег использовать для оформления кода С++?
C++ конечно.
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 20-07-2016, 01:54:13
А этот Визард где скачать?
http://usa.autodesk.com/adsk/servlet/index?id=1911627&siteID=123112
В разделе ObjectARX Wizard для соотвествующей версии AutoCAD и Visual Studio.
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 20-07-2016, 01:56:32
и использую пространства имен.
using namespace Autodesk::AutoCAD::DatabaseServices;
только вот С++ не разрешает задать сое имя пространству имен
к примеру я хочу задать имя CAD_DBS как это делал раньше на VB
А так не работает:
Код - C++ [Выбрать]
  1. namespace CAD_DBS = Autodesk::AutoCAD::DatabaseServices;
?
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 01:59:27
[quote author=Александр Ривилис link=topic=7213.msg21383#msg21383 date=1468968739]C++ конечно.[/quote]
К меня вот и вопрос как тег правильно оформить?
Вот так?
   [code = cpp]

Да точно так я понял.
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 02:01:06
namespace CAD_DBS = Autodesk::AutoCAD::DatabaseServices
А понял спасибо! Просто слово using убрать нужно.
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 20-07-2016, 02:06:09
namespace CAD_DBS = Autodesk::AutoCAD::DatabaseServices;
Так все ok компилятор не ругается
Название: Re: Подключение сборок ms visual studio c++
Отправлено: Алексей (IdeaSoft) от 22-07-2016, 22:40:27
А вот еще вопрос.
А нужно ли к проекту С++
подключать соотв. файлам
 acdbmgd.dll, accoremgd.dll, acmgd.dll

 acdbmgd.h, accoremgd.h, acmgd.h
 acdbmgd.lib, accoremgd.lib, acmgd.lib


Название: Re: Подключение сборок ms visual studio c++
Отправлено: Александр Ривилис от 23-07-2016, 00:06:42
А вот еще вопрос.
А нужно ли к проекту С++
подключать соотв. файлам
 acdbmgd.dll, accoremgd.dll, acmgd.dll

 acdbmgd.h, accoremgd.h, acmgd.h
 acdbmgd.lib, accoremgd.lib, acmgd.lib
Если проект native (т.е. без использования .NET), то acdbmgd.dll, accoremgd.dll, acmgd.dll подключать не только не нужно, но и невозможно, т.к. он их не поймёт.
А вот по поводу .h и .lib, указанных тобой - мне известен только один реально существующий acdbmgd.lib (и никаких h-файлов с такими именами), экспортирующий несколько функций:
Код - INI [Выбрать]
  1. E:\ObjectARX2017\lib-x64>dumpbin.exe /exports acdbmgd.lib
  2. Microsoft (R) COFF/PE Dumper Version 11.00.61030.0
  3. Copyright (C) Microsoft Corporation.  All rights reserved.
  4.  
  5.  
  6. Dump of file acdbmgd.lib
  7.  
  8. File Type: LIBRARY
  9.  
  10.      Exports
  11.  
  12.        ordinal    name
  13.  
  14.                   ?ExtensionLoader_IsLoaded@@YAHPEB_W@Z (int __cdecl ExtensionLoader_IsLoaded(wchar_t const *))
  15.                   ?LoadManagedDll@@YA?AW4ErrorStatus@Acad@@PEB_W@Z (enum Acad::ErrorStatus __cdecl LoadManagedDll(wchar_t const *))
  16.                   ?desc@AcMgObjectFactoryBase@@SAPEAVAcRxClass@@XZ (public: static class AcRxClass * __cdecl AcMgObjectFactoryBase::desc(void))
  17.                   ?isA@AcMgObjectFactoryBase@@UEBAPEAVAcRxClass@@XZ (public: virtual class AcRxClass * __cdecl AcMgObjectFactoryBase::isA(void)const )
  18.                   EstablishCulture
  19.                   Initialize
  20.                   LoadIndirectString
  21.                   Terminate
  22.  
  23.   Summary
  24.  
  25.           C3 .debug$S
  26.           14 .idata$2
  27.           14 .idata$3
  28.            8 .idata$4
  29.            8 .idata$5
  30.            C .idata$6
Из этих всех функций я использовал только одну - LoadManagedDll. Она используется для загрузки из native ObjectARX managed .NET сборок:
http://adn-cis.org/zagruzka-upravlyaemoj-.net-sborki-iz-objectarx-prilozheniya.html