Size: a a a

2020 October 09

W

Wild_Wind in Ada
Wild_Wind
Если стектрейс чем-то поможет, то вот:
Хммм, может я рантайм ады не завёл?
Там же в адских процессах два и более стеков, а плюсы-то о них не знают ничего...
источник

l

longboi in Ada
ой, русская консоль. держите меня семеро, ща разведу холивар
источник

AV

Alexey Veselovsky in Ada
а где она русская то?
источник

AV

Alexey Veselovsky in Ada
вроде в консоли всё латиницей
источник

AV

Alexey Veselovsky in Ada
или ты про русскую ЛОКАЛЬ?
источник

W

Wild_Wind in Ada
longboi
ой, русская консоль. держите меня семеро, ща разведу холивар
Разводите.
Только не забывайте поливать, удобрять, и окучивать :)
источник

l

longboi in Ada
Alexey Veselovsky
или ты про русскую ЛОКАЛЬ?
я хз как это правильно называется. "неопределённая ссылка на" и вот это вот всё
источник

W

Wild_Wind in Ada
longboi
я хз как это правильно называется. "неопределённая ссылка на" и вот это вот всё
Окей, замени на undefined reference.
Один хрен оно не гуглится :(
источник

W

Wild_Wind in Ada
longboi
я хз как это правильно называется. "неопределённая ссылка на" и вот это вот всё
И да, это локаль.
источник

l

longboi in Ada
та пара у меня на самом деле нету холивары разводить, так, вбросил для приличия
источник

W

Wild_Wind in Ada
longboi
та пара у меня на самом деле нету холивары разводить, так, вбросил для приличия
Я тоже :)
источник

МР

Максим Резник... in Ada
Wild_Wind
abc.hxx:
#include <iostream>
void foo(char * str){
std::cout << *str << std::endl;
}

abc.cxx:
#include <abc.hxx>

main.adb:
with abc_hxx;
with Interfaces.C.Strings; use Interfaces.C.Strings;
procedure Main is
  str : constant chars_ptr := New_String("X");
begin
   abc_hxx.foo(str);
end Main;

Генерим спеки:
gcc -c -fdump-ada-spec abc.hxx

Компилируем приложение на Аде, юзающее плюсы:
gnatmake -c main.adb

Биндим сгенеренные спеки, указывая "-n", обозначая, что это НЕ main:
gnatbind -n abc_hxx.ali 

Биндим main:
gnatbind main.ali 

Собираем либу на плюсах:
g++ abc.cxx -o abc.o -c -fPIC
ar rcs libabc.a abc.o

Линкуемся:
gnatlink main.ali -o result -labc -L. -lstdc++

Запускаем:
./result
X

Работает!!!


Естественно, вместо одного abc.cxx может быть всё что угодно.
Надо adainit вызывать, когда не Адский main
источник

W

Wild_Wind in Ada
Максим Резник
Надо adainit вызывать, когда не Адский main
Ладно, заменю на adainit.
Но оно работало :)
источник

W

Wild_Wind in Ada
Wild_Wind
gdb говорит:
Program received signal SIGSEGV, Segmentation fault.
system.secondary_stack.ss_mark () at s-secsta.adb:912
912  s-secsta.adb: Нет такого файла или каталога.
Блин, а вот этот падующий код я забыл выложить. Это когда я аду в либу ложил и из плюсов вызывал.
источник

W

Wild_Wind in Ada
Wild_Wind
Ладно, заменю на adainit.
Но оно работало :)
Работало, когда наоборот. Из ады плюсы звать.
источник

МР

Максим Резник... in Ada
4. Building Executable Programs with GNAT — GNAT User's Guide for Native Platforms 22.0w documentation
https://docs.adacore.com/live/wave/gnat_ugn/html/gnat_ugn/gnat_ugn/building_executable_programs_with_gnat.html#binding-with-non-ada-main-programs
источник

W

Wild_Wind in Ada
Максим Резник
4. Building Executable Programs with GNAT — GNAT User's Guide for Native Platforms 22.0w documentation
https://docs.adacore.com/live/wave/gnat_ugn/html/gnat_ugn/gnat_ugn/building_executable_programs_with_gnat.html#binding-with-non-ada-main-programs
Блет :(
А я думаю, откуда у меня сегфолт...
источник

W

Wild_Wind in Ada
adainit дернуть забыл :(
источник
2020 October 10

AV

Alexey Veselovsky in Ada
главное слишком часто не дергать 🙂
источник

W

Wild_Wind in Ada
Alexey Veselovsky
главное слишком часто не дергать 🙂
А то отвалится 😜
источник