Author |
Message |
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Пока нет - надо в самом протеусе еще чегой-то покрутить
- читаю талмуд из примера...
|
17 Nov 2012 21:42 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Да нет, Proteus не упал...
По плану в исходном документе создал графическую модель, которая будет работать
с нашей самодельной и нищебродской цифровой OURDEV.DLL:
Поскольку DLL-ка пока пустая и ничего не делает, проверил только, как она
связывается с Proteus-ом. Для этого подправил код:
При старте Proteus было видно, как четко отработала функция Win API LoadLibrary(),
за ней также четко отыграл вызов: createdsimmodel.
То есть, по основным функциям обращения к DLL пока нужные соглашения, похоже,
что выполняются.
Proteus не падает, а значит и по типу обращения через стек всё вроде как совпадает...
Ну дальше по плану буду наполнять DLL функциональностью, и будем посмотреть...
_________________ iLavr
|
17 Nov 2012 21:49 |
|
|
Shaos
Admin
Joined: 08 Jan 2003 23:22 Posts: 22423 Location: Silicon Valley
|
Ну голимые сишные вызовы будут вызываться, а вот дальнейшее дёргание C++ классов-методов уже не проканает
|
17 Nov 2012 22:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Кокой ви писсямист... Так и сглазить недолг а!
Меня сейчас чуть другое веселит...
Компилятор выдаёт: [C++ Error] vsm.hpp(253): E2451 Undefined symboI 'NULL'
У меня просто глаза на лоб лезут!
Это как же, вашу мать, извиняюсь, понимать?
_________________ iLavr
|
17 Nov 2012 23:03 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Ну надо же!!!
или Эта "срака С++", как изволит выражовываться bar, за ночь весь мозг проклюёт!!! Неужто ему мало?! А вот они в свой vsm.hpp вставили!!!
_________________ iLavr
|
17 Nov 2012 23:35 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Зачем такой пессемизм.
Даже при поверхностном просмотре VSM.HPP, видно что связь
Proteusa с моделями практически тот-же COM.
А COM сервера можно писать на многих C++ для Win и вроде-бы
даже на дельфях.
|
18 Nov 2012 05:02 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
У меня немного другая ситуация - я начал собирать DLL по руководству:
Creation VSM - Modelos Digitales.PDF, поскольку проверил сразу готовую
DLL-ку от KAZUS.RU -=- OneWireDebugger.dll, и она у меня под Proteus
выдала ошибку.
А у них эта DLL - полностью рабочая...
Когда у тебя компильнулась - тоже создал проект по исходникам OneWireDebugger,
но при компиляции куча ошибок вылезла. Причем каких-то явно глупых и связанных,
скорее, с ситаксисом.
Поэтому стал набирать по кусочкам исходник для OURDEV.DLL, но он тоже сейчас
подглюкивает при сборке...
У тебя какая версия самого Proteus? Моя - Release 6.7 SP3 with Advanced Simulation.
Я вот думаю - не слишком ли старовата....
_________________ iLavr
|
18 Nov 2012 06:19 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Я взя пример с kasus.ru.
Практически все скомпилировалось.
Пришлось закоментить в VSM.HPP _int64.
... потом был перерыв на 7 часов ...
Сейчас по PDF из KASUS.RU в Ghjntect сделал модель, девайс.
и стал запускать DLL.
Есть-но сразу все не зажотело работать.
В борланде для экспорта функции нужны другие ключи.
Сейчас Proteus тупо висит. Буду разбираться.
Proteus 7.6
Borland C++ 5.01
|
18 Nov 2012 06:48 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Я в Борланде в этот раз делал немного по-другому, нежели я обычно пишу DLL-ки:
Проект создавал вот как:
( New -> DLL Wizard -> галка [C++] -> галки [Use VCL, VC++ Style DLL] -> OK)
При этом получается DLL с точкой входа: DllMain, как в VC++.
и еще добавляю в проект файл: OURDEVAlias.def
это даёт нормальные синонимы функциям с "_".
Работает правильно... Хотя обычно я делаю проект для DLL несколько иначе...
Но щас после " паузы в 8.5 часов" на меня что-то тотальный тупизм ниспал...
PS. Жалко нечем проверить, правильно ли компилируется DLL-ка... VC++ у меня никакого нет...
_________________ iLavr
Last edited by Lavr on 18 Nov 2012 12:15, edited 1 time in total.
|
18 Nov 2012 07:03 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Я предпочитаю визардами не пользоваться, и ручками
прописываю _sddcall и _export.
А про *.def что-то забыл - давно не пользовался.
Исправляюсь - Proteus 7.2.
Кстати DLL с kasus.ru не заработала.
Есть некоторое подозрение, что VSM.HPP для каждой весии свой...
На работе есть студия 2010 попробую на ней,
но в результате не уверен.
|
18 Nov 2012 07:50 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Про COM в VSMSDK.HLP написано вот что: Так что COM - какой-то не совсем COM... Я давно собирался заняться цифровыми моделями Proteus и собирал материалы для этого... VSM.HPP - один и тот же (у меня их несколько собрано). Но боюсь я, что это всё для Proteus 6.4 - тогда ещё VSM SDK был открытым... Но надо же когда-то " толкнуть" всю эту проблему! Я опасался, что VSM.HPP вобще не воспримется Борландом! К сожалению - я не очень разбираюсь в тонкостях С++...
Я тоже обычно делаю всё вручную, но обычно я никогда не старался добиться совместимости
с VC++ - поэтому обратился к визарду.
_________________ iLavr
|
18 Nov 2012 08:13 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Про C++ abstract classes в VSMSDK.HLP написано вот что:
PS. Придется, наверное, настойчиво "покурить" раздел Setting up the C++ Project в VSM MODELLING TUTORIAL. Хотя пока не вижу там ограничений на версию компилятора С++...
_________________ iLavr
Last edited by Lavr on 18 Nov 2012 08:37, edited 1 time in total.
|
18 Nov 2012 08:24 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Ест-но не совсем и даже совсем ни COM, а принцип
организации/связывания:
-- через виртуальные функции.
-- для однозначности есть абстрактый класс, в котором
только виртуальные функции и все они абстрактные.
А их уже наполняеш функционалом.
У меня тоже есть класс на такомже принципе для
программ с плагинами - не нужно экспортировать
кучу различных функций.
Буду курить VSMSDK ...
|
18 Nov 2012 08:33 |
|
|
Lavr
Supreme God
Joined: 21 Oct 2009 08:08 Posts: 7777 Location: Россия
|
Меня пока применимость Борланда С++ беспокоит...
Но единственное, что я пока прочитал это:
Ну нигде нет явного ограничения, что только VC++ достоин для компиляции DLL для Proteusa...
_________________ iLavr
|
18 Nov 2012 08:45 |
|
|
aav8
Maniac
Joined: 05 Nov 2008 19:47 Posts: 287 Location: 81.28.208.238
|
Повторяюсь - должен подойти любо С++ компилятор, реализующий
виртуальные функции в стиле virtual table (применительно к Win).
Примерно такая фраза звучала в книге
Дональба Бокса "Сущиность технологии COM".
Будет время - полистаю - при удаче процитирую.
|
18 Nov 2012 08:59 |
|
|