SBCL возвращает handle-win32-exception

Я хочу вызвать функцию c ++ из SBCL, используя cffi. Я попытался вызвать следующую очень простую функцию.

#include <stdio.h>

void print1() {
printf("Hello World!");
}

Я сделал .so файл от gcc.

gcc -Wall -fpic -shared "c:/Users/***/Documents/tmp/test.c" -o "c:/Users/***/f_libraries/libtest.so" -m64`

И файл был создан следующим образом:
C:/Users/***/f_libraries/libtest.so: PE32+ executable (DLL) (console) x86-64, for MS Windows

Я могу прочитать этот файл из sbcl, но когда я вызвал функцию «print1», я получил следующее сообщение об ошибке.

Когда я позвонил в первый раз, я получил

* (cffi:foreign-funcall "print1" :void)

debugger invoked on a SB-SYS:MEMORY-FAULT-ERROR in thread
#<THREAD "main thread" RUNNING {1002DBA553}>:
Unhandled memory fault at #x28.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.

debugger invoked on a SB-SYS:MEMORY-FAULT-ERROR in thread
#<THREAD "main thread" RUNNING {1002DBA553}>:
Unhandled memory fault at #xFFFFFFFFFFFFFFFF.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.

(SB-DEBUG::DEBUG-LOOP-FUN)
0] backtrace

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002DBA553}>
0: (SB-DEBUG::DEBUG-LOOP-FUN)
1: (INTERNAL-DEBUG)
2: (SB-DEBUG::%INVOKE-DEBUGGER #<SB-SYS:MEMORY-FAULT-ERROR {1006390E03}>)
3: ((LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX))
4: (SB-IMPL::CALL-WITH-SANE-IO-SYNTAX #<CLOSURE (LAMBDA NIL :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {10063910CB}>)
5: (SB-IMPL::%WITH-STANDARD-IO-SYNTAX #<CLOSURE (FLET #:THUNK :IN SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX) {2281EB}>)
6: (SB-DEBUG::FUNCALL-WITH-DEBUG-IO-SYNTAX #<FUNCTION SB-DEBUG::%INVOKE-DEBUGGER> #<SB-SYS:MEMORY-FAULT-ERROR {1006390E03}>)
7: (INVOKE-DEBUGGER #<SB-SYS:MEMORY-FAULT-ERROR {1006390E03}>)
8: (ERROR SB-SYS:MEMORY-FAULT-ERROR :ADDRESS 18446744073709551615)
9: (SB-KERNEL:HANDLE-WIN32-EXCEPTION #.(SB-SYS:INT-SAP #X002284F0) #.(SB-SYS:INT-SAP #X00229220))
10: ("foreign function: #x4338BC")

0] 0
;
; compilation unit aborted
;   caught 1 fatal ERROR condition

После второго раза

* (cffi:foreign-funcall "print1" :void)

debugger invoked on a SB-SYS:MEMORY-FAULT-ERROR in thread
#<THREAD "main thread" RUNNING {1002DBA553}>:
Unhandled memory fault at #xFFFFFFFFFFFFFFFF.

Type HELP for debugger help, or (SB-EXT:EXIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.

(SB-KERNEL:HANDLE-WIN32-EXCEPTION #.(SB-SYS:INT-SAP #X0022B3A0) #.(SB-SYS:INT-SAP #X0022C0D0))
0] backtrace

Backtrace for: #<SB-THREAD:THREAD "main thread" RUNNING {1002DBA553}>
0: (SB-KERNEL:HANDLE-WIN32-EXCEPTION #.(SB-SYS:INT-SAP #X0022B3A0) #.(SB-SYS:INT-SAP #X0022C0D0))
1: ("foreign function: #x4338BC")

0] 0
;
; compilation unit aborted
;   caught 1 fatal ERROR condition

Мой компьютер — Windows 7 (64 бит).
У кого-нибудь есть подсказка для этой проблемы ??

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]