-Поиск по дневнику

Поиск сообщений в rss_forum_sources_ru

 -Подписка по e-mail

 

 -Постоянные читатели

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 29.07.2007
Записей:
Комментариев:
Написано: 80




Форум на Исходниках.RU


Добавить любой RSS - источник (включая журнал LiveJournal) в свою ленту друзей вы можете на странице синдикации.

Исходная информация - http://forum.sources.ru.
Данный дневник сформирован из открытого RSS-источника по адресу http://forum.sources.ru/yandex.php, и дополняется в соответствии с дополнением данного источника. Он может не соответствовать содержимому оригинальной страницы. Трансляция создана автоматически по запросу читателей этой RSS ленты.
По всем вопросам о работе данного сервиса обращаться со страницы контактной информации.

[Обновить трансляцию]

Библиотека на С++ для вызова библиотеки на С в Linux

Четверг, 17 Сентября 2020 г. 19:44 + в цитатник
ЫукпШ:
Цитата Sunless @
Я посмотрел в интернете, но, кроме extern "C", информации не нашел.

Так и есть. И я так делал.
Пишем модуль с функциями приблизительно так:
    //---------------------------------------------------------------------------
    // file boostintmod.cpp 2018.09.12
    //---------------------------------------------------------------------------
    #include "stdafx.h"
    #include "project.h"
    // какие-то инклюды
    //---------------------------------------------------------------------------
    extern "C"
    {
    int install (int argc,char* argv[]);
    int uninstall (void);
    void SetTest (bool bT);
    // _init() - будет вызвана при инициализации динамической библиотеки (загрузки ее в память);
    int _init (void);
    // _fini() - будет вызвана при выгрузке из памяти динамической библиотеки.
    int _fini (void);
    }
    //---------------------------------------------------------------------------
    //---------------------------------------------------------------------------
    int _init()
    {
    int iRetC=-1;
    // что-то делаем
    return iRetC;
    }
    //---------------------------------------------------------------------------
    int _fini()
    {
    int iRetC=-1;
    // что-то делаем
    return iRetC;
    }
    //---------------------------------------------------------------------------
    void SetTest(bool bT)
    {
    // что-то делаем
    }
    //---------------------------------------------------------------------------
    int install (int argc,char* argv[])
    {
    // что-то делаем
    return iRetC;
    }
    //---------------------------------------------------------------------------
    int uninstall (void)
    {
    // что-то делаем
    return iRetC;
    }

Дальше собираем .so файл и всё

https://forum.sources.ru/index.php?showtopic=419682&view=findpost&p=3838962


Метки:  

Программа на ассемблере без syscall для Linux

Четверг, 17 Сентября 2020 г. 18:31 + в цитатник
Sunless: Какая программа на Си нужна?

https://forum.sources.ru/index.php?showtopic=419681&view=findpost&p=3838958


Метки:  

Библиотека на С++ для вызова библиотеки на С в Linux

Четверг, 17 Сентября 2020 г. 18:21 + в цитатник
Sunless: Предыстория вопроса.
Есть программа на ассемблере для Linux
    .text
    .globl _start
    _start:
    movq 1, %rax
    movq , %rdi
    syscall

Есть программа на С, использующая программу на ассемблере и компилируемая GCC в shared library.
    #define EXPORT __attribute__((visibility("default")))
    EXPORT int foo(void);
    int foo(void)
    {
    extern int _start();
    return _start();
    }

Цель - написать прослойку на С++ в виде shared library с компиляцией GCC, которая бы прокидывала вызов к себе из C# в функцию библиотеки на С.
В C# вызов такой
    using System.Runtime.InteropServices;
    class Program{
    [DllImport("lib.so")] public static extern int foo ();
    static void Main(string[] args)
    {
    int code = foo();
    System.Console.WriteLine(code);
    }
    }


Я посмотрел в интернете, но, кроме extern "C", информации не нашел.

https://forum.sources.ru/index.php?showtopic=419682&view=findpost&p=3838957


Метки:  

Программа на ассемблере без syscall для Linux

Четверг, 17 Сентября 2020 г. 17:23 + в цитатник
Jin X: Добрый.

gas:
    .globl main
    main:
    ret
Но это с библиотекой Си.

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

https://forum.sources.ru/index.php?showtopic=419681&view=findpost&p=3838953


Метки:  

Отключить логирование определенного РЗ в Журнале регистрации.

Четверг, 17 Сентября 2020 г. 16:32 + в цитатник
^D^ima: погугли
    ПолучитьИспользованиеСобытияЖурналаРегистрации() и УстановитьИспользованиеСобытияЖурналаРегистрации()

возможно это оно

https://forum.sources.ru/index.php?showtopic=419684&view=findpost&p=3838949


Метки:  

Отключить логирование определенного РЗ в Журнале регистрации.

Четверг, 17 Сентября 2020 г. 15:45 + в цитатник
ReshResh: Добрый день.. обыскал весь интернет, но не нашел решения(
В общем проблема такая..
Есть регламентное задание которое запускается каждые 5 секунд.
В связи с этим, переполняется папка reg-1541? в которой лежат записи Журнала Регистрации.
ВОПРОС:
Есть ли какие либо методы, как можно отключить логирование именно этого Регламентного задания?

платформа 8.3, ЗУП 3.1

Заранее спасибо!

https://forum.sources.ru/index.php?showtopic=419684&view=findpost&p=3838947


Метки:  

Найти все пункты меню Создать?

Четверг, 17 Сентября 2020 г. 14:49 + в цитатник
navodri: Пытаюсь собрать в ListBox все расширения, которые отображаются в меню Windows "Создать". Все хорошо, но... Если большинство программ содержит ShellNew сразу после расширения:
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.txt\ShellNew

то пакет Microsoft Office прячет ShellNew еще глубже:
    HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.docx\Word.Document.12\ShellNew

Как мне найти и добавить такие ключи?


    procedure TForm1.Button1Click(Sender: TObject);
    var
    i: integer;
    iRes: integer;
    s: string;
    hTemp, hTemp1, hTemp2: HKEY;
    Buf: Pointer;
    BufSize: Integer;
    begin
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\Classes'), 0,
    KEY_READ, hTemp) = ERROR_SUCCESS then begin
    BufSize := 1024;
    GetMem(buf, BufSize);
    i := 0;
    iRes := ERROR_SUCCESS;
    while iRes = ERROR_SUCCESS do begin
    BufSize := 1024;
    iRes := RegEnumKeyEx(hTemp, i, buf, BufSize, nil, nil, nil, nil);
    if iRes = ERROR_SUCCESS then begin
    SetLength(s, BufSize);
    CopyMemory(@s[1], buf, BufSize);
    //Если нашли ShellNew - добавляем запись в ListBox1
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\Classes' + s + '\ShellNew'),
    0, KEY_READ, hTemp1) = ERROR_SUCCESS then begin
    ListBox1.Items.Add(s);
    end; //ERROR_SUCCESS
    //Если нашли old_ShellNew - добавляем запись в ListBox1
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE, PChar('SOFTWARE\Classes' + s + '\old_ShellNew'),
    0, KEY_READ, hTemp2) = ERROR_SUCCESS then begin
    ListBox1.Items.Add(s + ' (Отключен)');
    end; //ERROR_SUCCESS
    inc(i);
    end; //if iRes = ERROR_SUCCESS then begin
    end; //while iRes = ERROR_SUCCESS do begin
    FreeMem(buf);
    RegCloseKey(hTemp);
    end;
    end;

https://forum.sources.ru/index.php?showtopic=419683&view=findpost&p=3838943


Метки:  

Библиотека на С++ для вызова библиотеки на С в Linux

Четверг, 17 Сентября 2020 г. 13:38 + в цитатник
ЫукпШ:
Цитата Sunless @
Как написать динамическую библиотеку-обёртку на C++ для вызова через неё функции на С и как её компилировать с помощью GCC?

Не понял..
В чём именно проблема - в создании dll или вызове
функции из библиотеки "C" из программы на C++ ?

https://forum.sources.ru/index.php?showtopic=419682&view=findpost&p=3838940


Метки:  

Дюна

Четверг, 17 Сентября 2020 г. 13:08 + в цитатник

Метки:  

Библиотека на С++ для вызова библиотеки на С в Linux

Четверг, 17 Сентября 2020 г. 13:01 + в цитатник
Sunless: Добрый день!
У меня есть библиотека на С, вызывающая ассемблерную функцию:
    #define EXPORT __attribute__((visibility("default")))
    EXPORT int foo(void);
    int foo(void)
    {
    extern int _start();
    return 1;
    }


Как написать динамическую библиотеку-обёртку на C++ для вызова через неё функции на С и как её компилировать с помощью GCC?
Спасибо.

https://forum.sources.ru/index.php?showtopic=419682&view=findpost&p=3838938


Метки:  

Программа на ассемблере без syscall для Linux

Четверг, 17 Сентября 2020 г. 12:57 + в цитатник
Sunless: Добрый день!
Можно ли написать на ассемблере простую программу, которая не делает ничего и сразу выходит, без вызова прерываний syscall в Linux?
Спасибо.

https://forum.sources.ru/index.php?showtopic=419681&view=findpost&p=3838937


Метки:  

Сериалы

Четверг, 17 Сентября 2020 г. 12:50 + в цитатник
applegame: По слухам Момоа будет сниматься в приквеле The Witcher: Blood Origin

А пока кастинг для российской версии сериала:

Геральт:
geralt.jpg (, : 8)

Весемир:
vesemir.jpeg (, : 8)

https://forum.sources.ru/index.php?showtopic=168501&view=findpost&p=3838936


Метки:  

Вернуть значение из ассемблера в C# через С в Linux x64

Четверг, 17 Сентября 2020 г. 12:02 + в цитатник
Sunless: Код примера работает. Из Си ассемблерная функция вызывается. Попробовал посмотреть с помощью strace свою программу на C#, но там exit_group(1) не вызывается, -значит, что до ассемблера не доходит. Со статической библиотекой исключение Unhandled exception. System.DllNotFoundException: Unable to load shared library 'libtest.so' or one of its dependencies. In order to help diagnose loading problems, consider setting the LD_DEBUG environment variable: liblibtest.so: cannot open shared object file: No such file or directory
at Program.print(String message)

Добавлено
Как сделать библиотеку для Linux на С++, которая бы вызывала мою библиотеку на С?

https://forum.sources.ru/index.php?showtopic=416410&view=findpost&p=3838931


Метки:  

Вернуть значение из ассемблера в C# через С в Linux x64

Четверг, 17 Сентября 2020 г. 11:25 + в цитатник
Wound: По ссылке выше:
    #include
    void print(const char *message)
    {
    printf("%s\n", message);
    }


    using System;
    using System.Runtime.InteropServices;
    public class Tester
    {
    [DllImport("libtest.so", EntryPoint="print")]
    static extern void print(string message);
    public static void Main(string[] args)
    {
    print("Hello World C# => C++");
    }
    }


Начни с этого примера. Если это заработает, значит проблема в импорте функции из ассемблера или в линковке ассемблерной библиотеки в Сишную.
Возможно у тебя не находит ассемблерную функцию в контексте C# кода.
Попробуй может сделать статическую либу :-?
А из Си вызывается ассемблерная функция? Можно еще конечно посоветовать юзать C++/Cli как прокладку между C# и C/Asm, но я не знаю умеет ли она работать с *.so библиотеками.

https://forum.sources.ru/index.php?showtopic=416410&view=findpost&p=3838930


Метки:  

Вернуть значение из ассемблера в C# через С в Linux x64

Четверг, 17 Сентября 2020 г. 11:00 + в цитатник
Sunless:
    #define EXPORT __attribute__((visibility("default")))
    EXPORT int foo(void);
    int foo(void)
    {
    extern int _start();
    return 1;
    }

    .text
    .globl _start
    _start:
    movq 1, %rax
    movq , %rdi
    syscall

    using System.Runtime.InteropServices;
    class Program{
    [DllImport("lib.so")] public static extern int foo ();
    static void Main(string[] args)
    {
    int code = foo();
    System.Console.WriteLine(code);
    }
    }

Тут я делаю gcc -shared -fpic -o lib.so my.c asm.s
затем dotnet run
и получаю в консоли 1
Если верну в Си return _start();, то получаю сообщение Hosting components are already initialized. Re-initialization to execute an app is not allowed.

https://forum.sources.ru/index.php?showtopic=416410&view=findpost&p=3838926


Метки:  

Вернуть значение из ассемблера в C# через С в Linux x64

Четверг, 17 Сентября 2020 г. 10:19 + в цитатник
Wound: Попробуй сделать как тут описано:
https://stackoverflow.com/questions/1142520...tion-from-c-net

И вообще почему в Си у тебя функция static ? ты специально так написал?

Цитата Sunless @
Почему программа не видит функцию?

Добавлено Вчера, 22:07
Поставил EntryPoint="_start", и при запуске программа ничего не выводит и не завершается.

Почему EntryPoint="_start" а не EntryPoint="foo" ? ты какую функцию вызвать то хочешь, я так и не понял. В любом случае попробуй сделать как по ссылке выше, может поможет.

https://forum.sources.ru/index.php?showtopic=416410&view=findpost&p=3838919


Метки:  

Вернуть значение из ассемблера в C# через С в Linux x64

Среда, 16 Сентября 2020 г. 21:51 + в цитатник
Sunless: Упростил код.

my.c:
    static int foo(void)
    {
    extern int _start();
    return _start();
    }


asm.s:
    .text
    .globl _start
    _start:
    movq , %rax
    xor %rdi, %rdi
    syscall


C#:
    [DllImport("lib.so")] public static extern int foo ();


Команда сборки:
Цитата
as --64 -o asm.o asm.s && gcc -c -fpic my.c -o my.o && gcc -shared -o lib.so my.o asm.o


Получаю исключение dotnet run
Unhandled exception. System.EntryPointNotFoundException: Unable to find an entry point named 'foo' in shared library 'lib.so'.
at Program.foo()

Почему программа не видит функцию?

Добавлено
Поставил EntryPoint="_start", и при запуске программа ничего не выводит и не завершается.

https://forum.sources.ru/index.php?showtopic=416410&view=findpost&p=3838912


Метки:  

Сериалы

Среда, 16 Сентября 2020 г. 19:47 + в цитатник
Prince: Воспитанные волками кто-нибудь смотрел? Что там, смотреть можно?

https://forum.sources.ru/index.php?showtopic=168501&view=findpost&p=3838910


Метки:  

Вкусненькое с БАШа

Среда, 16 Сентября 2020 г. 17:34 + в цитатник
JoeUser: Gonarh, конгруэнтная фигня!

https://forum.sources.ru/index.php?showtopic=151229&view=findpost&p=3838908


Метки:  

Вкусненькое с БАШа

Среда, 16 Сентября 2020 г. 11:37 + в цитатник

Метки:  

Поиск сообщений в rss_forum_sources_ru
Страницы: 2628 ... 2430 2429 [2428] 2427 2426 ..
.. 1 Календарь