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

Тема в разделе "WASM.BEGINNERS", создана пользователем 2Hard2Forget, 25 окт 2019.

Метки:
  1. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    CoCreateInstance...
    --- Сообщение объединено, 28 окт 2019 ---
    использование СОМ из чистых си - это вряд ли тебе доступно будет в ближайший десяток лет, особенно с такими "преподами"...
     
    Mikl___, 2Hard2Forget и M0rg0t нравится это.
  2. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    86
    Я вполне серьёзно, то есть мне нужно создать atl и подключить его к сишному проекту, и через точку вызывать методы, хранящиеся в этой ATL(COM)? А в самой ATL реализовать writeconsole?
     
  3. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    У GCC есть объявление и сишных хедеров, там просто виртуальные таблицы экспортируются, а не объекты. И вызов будет выглядеть не как:
    Код (Text):
    1.  
    2. object->method(args);
    3.  
    А как:
    Код (Text):
    1.  
    2. object_vtbl->method(object, args);
    3.  
    --- Сообщение объединено, 28 окт 2019 ---
    Вот, кстати, конкретный пример:
    https://github.com/Alexpux/mingw-w6...6/mingw-w64-headers/include/msxml.h#L293-L386
     
  4. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    удачи тебе найти объявление хотя бы одного любого дотнет класса...
    --- Сообщение объединено, 28 окт 2019 ---
    я тут как то спрашивал хедер от студии мскорлиба, чтобы портировать его под мингв... можно поискать по форуму, запамятовал, как тема называлась... для сишечки придется все на структурах и втейблах переписывать...
     
  5. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    А у MS Visual C++ есть? Я просто если сейчас что-то под венду пишу, то на GCC, и то редко.
     
  6. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    у студии есть mscorlib.tlb или как то так, из которого можно хедер получить... но хедер само собой плюсовый и заточен под из компиль... придется немного потрудиться, чтобы нужные интерфейсы портировать в структуры и втаблы для сишечки...
     
  7. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Ну вообще, можно найти генератор для tlb.
    У GCC приведённый мною хидер из idl был сгенерирован. Думаю, и для tlb есть тоже.

    А топикстартеру точно именно Pure C нужен, а не С++?
     
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    я не думаю, что он сам понимает, что ему нужно...
     
    M0rg0t нравится это.
  9. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    ФИО у него есть? ну или сайт, вуз.... на какую позицию нужна такая подготовка?
     
  10. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    на позицию васм-тролля...
     
    M0rg0t, Mikl___ и q2e74 нравится это.
  11. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    Это личинка Сацуры!
     
  12. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    просто задача, как и предыдущая - очередная вещь в себе. палит и время и мотивацию, а мог бы прокачивать прикладные навыки.
     
  13. TrashGen

    TrashGen ТрещГен

    Публикаций:
    0
    Регистрация:
    15 мар 2011
    Сообщения:
    1.191
    Адрес:
    подполье
    Тролль-Оборотень!
     
    Mikl___ нравится это.
  14. 2Hard2Forget

    2Hard2Forget Member

    Публикаций:
    0
    Регистрация:
    27 авг 2018
    Сообщения:
    86
    Я нашёл некоторую реализацию c использованием CoCreateInstance. В си файле этого проекта доступны значения , вычисленные в классе , но как можно воспользоваться методом system.console.writeline в этом Си файле? Или чтобы запись имела вид system.console.writeline,но работала через WriteConsole
    --- Сообщение объединено, 29 окт 2019 ---
     

    Вложения:

    • PlainC.zip
      Размер файла:
      4,6 МБ
      Просмотров:
      323
    Последнее редактирование: 29 окт 2019
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    если класс систем.консоль экспортируется, то нужно найти его гуид... с помощью гуида и кокриейтинстанс создать объект класса... найти гуид интерфейса класса и его гуид, вызвать квариинтерфейс у интерфейса ианноун с гуидом нужного интерфейса... создать/найти втейбл для этого интерфейса, вызвать метод через втейбл...

    но, я почти уверен, что систем.консоль не экспортируется системой, как ком класс... в этом случае нужно захостить .нет рантайм у себя в приложении с помощью цлрсреатеинстанс (предполагаем, что мы нормальные люди, и у нас всех есть установленный фреймворк версии 4.х)... получить из соответствующего интерфейса _аппдомен, в _аппдомене через интерфейс _тайп найти тип класса систем.консоль и через метод интерфейса инвок вызвать его...
    --- Сообщение объединено, 29 окт 2019 ---
    https://habr.com/ru/sandbox/30762/ для референса...
     
  16. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    Rel, ой ли... мне кажется там в голове у препода должен быть очень тупой способ, типа дернули командную строку, в ней запустили совершенно стандартно дотнетовскую апликуху, в которой прям вот прописано system.console.writeline"Fibonacci number {0} is {1},i,v" . Потому как если бы там, в голове у препода, было бы по другому, то и ТЗ выдавалось бы письменно в нормальной форме, и задачи были бы адекватные. Какие-то CTF-ные цирковые номера, а не задачи. Хотя, а мож они и есть?
     
    SadKo и TermoSINteZ нравится это.
  17. SadKo

    SadKo Владимир Садовников

    Публикаций:
    8
    Регистрация:
    4 июн 2007
    Сообщения:
    1.610
    Адрес:
    г. Санкт-Петербург
    Короче, мой совет - сказать преподу: "Без досконального письменного тектового Т.З. - результат Х.З."
     
  18. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.553
    Адрес:
    Russia
    Я думаю все проще
    Вот вам код на С++ . который юзает С#
    Код (C++):
    1.  
    2. #include <iostream>
    3. #using <mscorlib.dll>
    4. using namespace System;
    5. int main(array<System::String^>^ args)
    6. {
    7.   //using pure C++
    8.   std::cout << "C++ ouptut" << std::endl;
    9.   //using pure C#
    10.   Console::WriteLine("Fibonacci number {0} is {1},i,v");
    11.   return 0;
    12. }
    13.  
    Собирается VisualStudio 2019 / Опции компиляции /clr /Zc:twoPhase-
     
  19. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.330
    это https://ru.m.wikipedia.org/wiki/C++/CLI - это даже не плюсы, а в ТЗ заявлена сишечка, хотелось бы вам напомнить...
     
  20. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.553
    Адрес:
    Russia
    Rel, ничего не знаю.
    в проекте юзаются плюсы .
    так же юзается С #