Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компиляция obj файлов / 25 сообщений из 32, страница 1 из 2
25.06.2018, 18:20
    #39665507
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Хотелось бы совета: какой можно использовать компилятор C/C++, крайне желательно бесплатный, с минимальным размером установки (VSC2017 по минимуму чуть ли не 10 гиг хочет :( ) чтобы можно было компилировать всякие сишные исходники (например ZLib) для дальнейшего использования в Delphi-приложениях?
С поддержкой x64.

Пытался тут MiniGW поюзать, он не умеет в COFF. Халявный bcc32 умеет только в x86...
...
Рейтинг: 0 / 0
25.06.2018, 18:38
    #39665516
чччД__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvp,
Для использования ms vs c++ компилятора вовсе не нужно всю вижуплстудию ставить.
...
Рейтинг: 0 / 0
25.06.2018, 18:43
    #39665520
Василий 2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Не спец (у меня с с++ взаимная антипатия), но имхо легче поискать компактную поставку студии. С этими аналогами потом заколебешься - то инклюда ему нет, то опция не нравится, то вообще какая-то загадочная хрень.
...
Рейтинг: 0 / 0
25.06.2018, 18:44
    #39665522
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
чччД__alekcvp,
Для использования ms vs c++ компилятора вовсе не нужно всю вижуплстудию ставить.

Ага, как там только ставишь галочки "компиляторы с++ (x86-64)", так он сразу зависимостей на 6+ гигов подтягивает. Это 2017 community.
Windows 7 SDK не ставится зараза, говорит "у вас бета .NET 4.0 стоит, поставьте нормальную" (а у меня 4.7.2 стоит...).
В Windows 8.1 SDK я его не нашёл уже.
Где его ещё взять можно?
...
Рейтинг: 0 / 0
25.06.2018, 18:57
    #39665526
чччД__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvp,
Ну ты можешь отдельно поставить компайлер с самым минимумом, а потом доставить нужную SDK.

Но лучше, имхо, использовать студию.
Вовсе не нужды ставить "все-все-все", сейчас есть "рекомендуемые пакеты": https://blogs.msdn.microsoft.com/vcblog/2016/08/22/the-lightweight-visual-studio-15-installer/
- выбирай "Windows Desktop Development with C++", можешь убрать/добавить что-то, и сразу получаешь рабочую среду.
Ну да, все равно много гигабайт. 21й век.
...
Рейтинг: 0 / 0
25.06.2018, 19:01
    #39665527
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvpПытался тут MiniGW поюзать, он не умеет в COFF.

Он-то как раз в COFF умеет, но Дельфи требует OMF.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2018, 19:04
    #39665530
чччД__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvp,
у меня вообще несколько версий ms vs установлено: проекты по них заточены.
Ну что же теперь.
Кстати, инсталляции новых msvs нельзя не на системном диске делать. Даже если попросишь - все равно основной объем на системный диск приходится.
...
Рейтинг: 0 / 0
25.06.2018, 19:14
    #39665536
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Dimitry SibiryakovalekcvpПытался тут MiniGW поюзать, он не умеет в COFF.

Он-то как раз в COFF умеет, но Дельфи требует OMF.

Начиная с XE2 именно COFF, если верить интернетам, а MiniGW делает ELF(?) или что-то другое. Ну или я хз.

Я в студии собрал тот же ZLib, он вроде линкуется, но ни одной функции внутри не находит... может какие-то настройки упустил?
...
Рейтинг: 0 / 0
25.06.2018, 19:19
    #39665538
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvp,

А этот тебя не устраивает?
...
Рейтинг: 0 / 0
25.06.2018, 19:29
    #39665542
Kazantsev Alexey
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Kazantsev AlexeyА этот тебя не устраивает?
...x64 не поддерживает, понял.
...
Рейтинг: 0 / 0
25.06.2018, 19:31
    #39665548
Sapersky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvpMiniGW делает ELF(?) или что-то другое
Может от настроек зависит, но у меня похоже делает COFF - всё линкуется и работает.
Опять же, есть конвертер obj-файлов:
http://www.agner.org/optimize/#objconv
...
Рейтинг: 0 / 0
25.06.2018, 19:36
    #39665551
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvpа MiniGW делает ELF(?) или что-то другое

MinGW делает PE-COFF, такой же как и MSVC.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25.06.2018, 19:45
    #39665554
Компиляция obj файлов
Насколько я помню, там были проблемы с сишным RTL, который не понятно где для Delphi взять. Если под виндоус можно как-то поставить ссылки на dll, то с другими ОС вообще не понятно что делать
...
Рейтинг: 0 / 0
25.06.2018, 19:47
    #39665555
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
SaperskyalekcvpMiniGW делает ELF(?) или что-то другое
Может от настроек зависит, но у меня похоже делает COFF - всё линкуется и работает.
Опять же, есть конвертер obj-файлов:
http://www.agner.org/optimize/#objconv
Ну вот с VS я уже [за]кончил - всё собирает, всё линкуется, но ни одной функции в .obj-файле дельфя не видит.
Попробую теперь через MiniGW и конвертер...
...
Рейтинг: 0 / 0
25.06.2018, 20:10
    #39665564
Компиляция obj файлов
alekcvp,

Ты наверное external не сдедал
Посмотри в исходниках ZLib, чтобы сделать по аналогии

И ещё момент
Если проект C++, то нужные функции должны быть Extern C вроде бы
...
Рейтинг: 0 / 0
25.06.2018, 20:12
    #39665566
Sapersky
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvpни одной функции в .obj-файле дельфя не видит.
Открой этот obj как текст, посмотри в каком виде там имена функций - может "_" добавить в начале, может быть какой-то более сложный name mangling.
Есть у меня сторонняя сишная dll-ка, так там к именам пристёгнут общий размер параметров в байтах, что ли.
Код: pascal
1.
function PylonDeviceSetFloatFeature(hDev : PYLON_DEVICE_HANDLE; pName : PPylonChar; Value : Double): GENAPIC_RESULT; stdcall; external DLLname name '_PylonDeviceSetFloatFeature@16';
...
Рейтинг: 0 / 0
25.06.2018, 20:52
    #39665579
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Dimitry SibiryakovalekcvpПытался тут MiniGW поюзать, он не умеет в COFF.

Он-то как раз в COFF умеет, но Дельфи требует OMF.

https://stackoverflow.com/questions/31095280/how-to-convert-64bit-coff-to-omf

для 64бит нет
...
Рейтинг: 0 / 0
25.06.2018, 21:09
    #39665591
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
ПиплХаваетalekcvp,
Ты наверное external не сдедал
Посмотри в исходниках ZLib, чтобы сделать по аналогии

И ещё момент
Если проект C++, то нужные функции должны быть Extern C вроде бы

Я вообще-то на исходниках ZLib 1.2.11 всё и тестирую :)
...
Рейтинг: 0 / 0
25.06.2018, 22:08
    #39665610
чччД__
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvp,

вот тут: https://visualstudio.microsoft.com/ru/thank-you-downloading-visual-studio/?sku=BuildTools&rel=15
- выбирай Visial C++ Build Tool, оставь галки на 1-й, 2-й (и, скорее всего последней строчке - поддержка Win XP) - и все, вся красота меньше 3х Гб.
...
Рейтинг: 0 / 0
25.06.2018, 22:19
    #39665617
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
чччД__,

Спасибо. Я пока с MiniGW ковыряюсь. Он действительно делает pe-coff.

Но теперь непонятный затык:

Есть zlib.h, там объявление:
Код: plaintext
1.
2.
3.
ZEXTERN int ZEXPORT compress2 OF((Bytef *dest,   uLongf *destLen,
                                  const Bytef *source, uLong sourceLen,
                                  int level)); 


есть compress.c, в нём следующее:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
#include "zlib.h"

int ZEXPORT compress2 (dest, destLen, source, sourceLen, level)
    Bytef *dest;
    uLongf *destLen;
    const Bytef *source;
    uLong sourceLen;
    int level;
{
    z_stream stream;
    int err;
    .....


А в результате в получившемся compress.o я имею:

Код: plaintext
1.
2.
3.
Symbol 2 - Name: compress2
  Value=0, Section=1, Type=0x20, StorClass= External/Public , NumAux=1
  Aux function definition:
  .bf_tag_index: 0x0, code_size: 0, PLineNumRec: 0, PNext: 0

Вопрос: почему compress2() помечена как external, если она присутствует в исходном .c файле?..
...
Рейтинг: 0 / 0
26.06.2018, 00:35
    #39665651
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
alekcvpВопрос: почему compress2() помечена как external, если она присутствует в исходном .c файле?..

Public. Это всё равно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
26.06.2018, 08:58
    #39665695
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
ПиплХаваетalekcvp,

Ты наверное external не сдедал
Посмотри в исходниках ZLib, чтобы сделать по аналогии

И ещё момент
Если проект C++, то нужные функции должны быть Extern C вроде быDelphi, по крайней мере раньше, с С++ .obj не умел линковаться совсем, даже если функции extern "C" помечены.
...
Рейтинг: 0 / 0
26.06.2018, 08:59
    #39665696
Barlone
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
...
Рейтинг: 0 / 0
26.06.2018, 10:34
    #39665779
Квейд
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
Компилить билдером, оборачивать в DLL интерфейс не предлагать?
...
Рейтинг: 0 / 0
26.06.2018, 11:22
    #39665843
alekcvp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Компиляция obj файлов
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 интерфейс не предлагать?Тут смысл не в том чтобы конкретно эту библиотеку заполучить, а в том чтобы научиться [любые] сишные исходники при необходимости статически линковать.
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Компиляция obj файлов / 25 сообщений из 32, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]