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

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

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

 

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

 -Статистика

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


Вернуть значение из ассемблера в 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

Метки:  

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку