@WisdomButcher

Как запустить из C# код C, использующий код на ассемблере без инлайна?

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


asm.s:
.text
   .globl _start

_start:               
   movq $60, %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()
  • Вопрос задан
  • 142 просмотра
Пригласить эксперта
Ответы на вопрос 2
freeExec
@freeExec
Участник OpenStreetMap
https://stackoverflow.com/questions/2164827/explic...
и нужно ли это делать в чистом Си?

Компилятор смотрит на твою функцию foo хмм.. её не кто не вызывает, удалю её нафиг из кода.
Ответ написан
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
Unable to find an entry point named 'foo' in shared library 'lib.so'.

Убрать static из static int foo(void).

код C, использующий код на ассемблере без инлайна?

проблема не в ассемблере
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы