|
|
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Хотелось бы совета: какой можно использовать компилятор C/C++, крайне желательно бесплатный, с минимальным размером установки (VSC2017 по минимуму чуть ли не 10 гиг хочет :( ) чтобы можно было компилировать всякие сишные исходники (например ZLib) для дальнейшего использования в Delphi-приложениях? С поддержкой x64. Пытался тут MiniGW поюзать, он не умеет в COFF. Халявный bcc32 умеет только в x86... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 18:20 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvp, Для использования ms vs c++ компилятора вовсе не нужно всю вижуплстудию ставить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 18:38 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Не спец (у меня с с++ взаимная антипатия), но имхо легче поискать компактную поставку студии. С этими аналогами потом заколебешься - то инклюда ему нет, то опция не нравится, то вообще какая-то загадочная хрень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 18:43 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
чччД__alekcvp, Для использования ms vs c++ компилятора вовсе не нужно всю вижуплстудию ставить. Ага, как там только ставишь галочки "компиляторы с++ (x86-64)", так он сразу зависимостей на 6+ гигов подтягивает. Это 2017 community. Windows 7 SDK не ставится зараза, говорит "у вас бета .NET 4.0 стоит, поставьте нормальную" (а у меня 4.7.2 стоит...). В Windows 8.1 SDK я его не нашёл уже. Где его ещё взять можно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 18:44 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvp, Ну ты можешь отдельно поставить компайлер с самым минимумом, а потом доставить нужную SDK. Но лучше, имхо, использовать студию. Вовсе не нужды ставить "все-все-все", сейчас есть "рекомендуемые пакеты": https://blogs.msdn.microsoft.com/vcblog/2016/08/22/the-lightweight-visual-studio-15-installer/ - выбирай "Windows Desktop Development with C++", можешь убрать/добавить что-то, и сразу получаешь рабочую среду. Ну да, все равно много гигабайт. 21й век. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 18:57 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvpПытался тут MiniGW поюзать, он не умеет в COFF. Он-то как раз в COFF умеет, но Дельфи требует OMF. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:01 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvp, у меня вообще несколько версий ms vs установлено: проекты по них заточены. Ну что же теперь. Кстати, инсталляции новых msvs нельзя не на системном диске делать. Даже если попросишь - все равно основной объем на системный диск приходится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:04 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovalekcvpПытался тут MiniGW поюзать, он не умеет в COFF. Он-то как раз в COFF умеет, но Дельфи требует OMF. Начиная с XE2 именно COFF, если верить интернетам, а MiniGW делает ELF(?) или что-то другое. Ну или я хз. Я в студии собрал тот же ZLib, он вроде линкуется, но ни одной функции внутри не находит... может какие-то настройки упустил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:14 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Kazantsev AlexeyА этот тебя не устраивает? ...x64 не поддерживает, понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:29 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvpMiniGW делает ELF(?) или что-то другое Может от настроек зависит, но у меня похоже делает COFF - всё линкуется и работает. Опять же, есть конвертер obj-файлов: http://www.agner.org/optimize/#objconv ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:31 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvpа MiniGW делает ELF(?) или что-то другое MinGW делает PE-COFF, такой же как и MSVC. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:36 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Насколько я помню, там были проблемы с сишным RTL, который не понятно где для Delphi взять. Если под виндоус можно как-то поставить ссылки на dll, то с другими ОС вообще не понятно что делать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:45 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
SaperskyalekcvpMiniGW делает ELF(?) или что-то другое Может от настроек зависит, но у меня похоже делает COFF - всё линкуется и работает. Опять же, есть конвертер obj-файлов: http://www.agner.org/optimize/#objconv Ну вот с VS я уже [за]кончил - всё собирает, всё линкуется, но ни одной функции в .obj-файле дельфя не видит. Попробую теперь через MiniGW и конвертер... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 19:47 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvp, Ты наверное external не сдедал Посмотри в исходниках ZLib, чтобы сделать по аналогии И ещё момент Если проект C++, то нужные функции должны быть Extern C вроде бы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 20:10 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvpни одной функции в .obj-файле дельфя не видит. Открой этот obj как текст, посмотри в каком виде там имена функций - может "_" добавить в начале, может быть какой-то более сложный name mangling. Есть у меня сторонняя сишная dll-ка, так там к именам пристёгнут общий размер параметров в байтах, что ли. Код: pascal 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 20:12 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovalekcvpПытался тут MiniGW поюзать, он не умеет в COFF. Он-то как раз в COFF умеет, но Дельфи требует OMF. https://stackoverflow.com/questions/31095280/how-to-convert-64bit-coff-to-omf для 64бит нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 20:52 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
ПиплХаваетalekcvp, Ты наверное external не сдедал Посмотри в исходниках ZLib, чтобы сделать по аналогии И ещё момент Если проект C++, то нужные функции должны быть Extern C вроде бы Я вообще-то на исходниках ZLib 1.2.11 всё и тестирую :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 21:09 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvp, вот тут: https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15 - выбирай Visial C++ Build Tool, оставь галки на 1-й, 2-й (и, скорее всего последней строчке - поддержка Win XP) - и все, вся красота меньше 3х Гб. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 22:08 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
чччД__, Спасибо. Я пока с MiniGW ковыряюсь. Он действительно делает pe-coff. Но теперь непонятный затык: Есть zlib.h, там объявление: Код: plaintext 1. 2. 3. есть compress.c, в нём следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. А в результате в получившемся compress.o я имею: Код: plaintext 1. 2. 3. Вопрос: почему compress2() помечена как external, если она присутствует в исходном .c файле?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2018, 22:19 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
alekcvpВопрос: почему compress2() помечена как external, если она присутствует в исходном .c файле?.. Public. Это всё равно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2018, 00:35 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
ПиплХаваетalekcvp, Ты наверное external не сдедал Посмотри в исходниках ZLib, чтобы сделать по аналогии И ещё момент Если проект C++, то нужные функции должны быть Extern C вроде быDelphi, по крайней мере раньше, с С++ .obj не умел линковаться совсем, даже если функции extern "C" помечены. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2018, 08:58 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Компилить билдером, оборачивать в DLL интерфейс не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2018, 10:34 |
|
||
|
Компиляция obj файлов
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovalekcvpВопрос: почему compress2() помечена как external, если она присутствует в исходном .c файле?.. Public. Это всё равно. Нет, External/Public - это импорт, т.е. такой функции в объектном файле нет. Когда экспорт, то оно называется Static/Public Barlone http://rvelthuis.de/articles/articles-cobjs.html Да, читал, спасибо. Там же и написано, что XE2+ понимает COFF. BarloneDelphi, по крайней мере раньше, с С++ .obj не умел линковаться совсем, даже если функции extern "C" помечены.Собственно, я сумел откомпилировать ZLib до той стадии, когда у меня дельфя понимает эти файлы и импортирует из них нужные функции. Но при этом часть из них почему-то в объектные файлы не попадает, пытаюсь понять почему. КвейдКомпилить билдером, оборачивать в DLL интерфейс не предлагать?Тут смысл не в том чтобы конкретно эту библиотеку заполучить, а в том чтобы научиться [любые] сишные исходники при необходимости статически линковать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2018, 11:22 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39665538&tid=2040687]: |
0ms |
get settings: |
8ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 446ms |

| 0 / 0 |
