Делаем с-файл с функцией в которой есть static переменная.
Делаем obj файл в cpp builder 64 бита.
Делаем pas файл. Подключаем к нему получившийся obj.
Компилируем Delphi 64 бита.
Получаем ошибку линковки bad obj file format.
БЕЗ static - всё хорошо. Но нужен static...
Однако сами Embarcadero как-то же собирают crtl в котором есть static. И оно даже как-то линкуется.
Если переменную сделать глобальной, но не static, то получаем ошибку bad symbol.
Рафинированый пример выделять пока некогда.
Если переменную сделать глобальной и extern и инстанцировать её на стороне pas кода, то всё хорошо. Только pas коду совершенно не нужно такое знание кишков c кода.
А если в функции сделать переменную на стеке типа char [16000] то на стороне Delphi требуется определение функции __chkstk. В msdn можно найти её куцее описание.
Делаем obj файл в cpp builder 64 бита.
Делаем pas файл. Подключаем к нему получившийся obj.
Компилируем Delphi 64 бита.
Получаем ошибку линковки bad obj file format.
БЕЗ static - всё хорошо. Но нужен static...
Однако сами Embarcadero как-то же собирают crtl в котором есть static. И оно даже как-то линкуется.
Если переменную сделать глобальной, но не static, то получаем ошибку bad symbol.
Рафинированый пример выделять пока некогда.
Если переменную сделать глобальной и extern и инстанцировать её на стороне pas кода, то всё хорошо. Только pas коду совершенно не нужно такое знание кишков c кода.
А если в функции сделать переменную на стеке типа char [16000] то на стороне Delphi требуется определение функции __chkstk. В msdn можно найти её куцее описание.
Комментариев нет:
Отправить комментарий