LINUX.ORG.RU

получение *.so


0

2

Есть исходник A.h, в котором реализован класс и все методы. Как
создать *.so из A.h, чтобы сам исходник A.h не фигурировал в коде ? Ну
и подключить его (*.so) к коду ?


мне кажется, что нужно читать матчасть. A.h - это не исходник, а заголовочный файл.

mono ★★★★★
()
Ответ на: комментарий от drZlo

я хочу сказать, что процесс компиляции кода на Си/C++ делится на две части:первое - компиляция, второе - линковка. заголовочные файлы нужны именно на первом этапе, компилятор про .so ничего не знает, поэтому от .h файлов никак не избавишься.

mono ★★★★★
()

Просто переименуй его в A.h.с и скомпиль :) Можно конечно и не переименовывать :)

Jetty ★★★★★
()
Ответ на: комментарий от Kirakishou

>> Никак, вы не можете получить *.so из заголовочных файлов.

...в котором реализован класс и все методы....


Правда ?

Jetty ★★★★★
()

Объявление класса всё равно будет нужно при использовании. Так что либо выноси определения методов в .cxx, либо сошка тебе не нужна.

const86 ★★★★★
()

я бы для начала посоветовал использовать заголовочные файлы по назначению и не вкрячивать туда то, чего там быть не должно. Тогда и глупые вопросы сами собой отпадут.

Deleted
()

Капитан снова здесь! Он спасёт отца русской демократии!
Берёшь свой A.h парсишь ручками, делаешь два файла - A'.h и A.cpp. Компилишь свою со, и к ней прилагаешь A'.h. Опля - всё готово.

nanoo_linux
()

afaik, из хидера можно получить только pch

fads ★★
()
Ответ на: комментарий от Jetty

> Правда ?

Нет, не правда. Но вопрошающему о способах, которым это можно сделать, лучше никогда не знать. А вам, как «посоветовавшему» один из таких способов, нужно хорошенько <додумайте сами>.

Kirakishou
()

а тупо сделать A.cpp

#include "A.h"

и его скомпилять?

vladimir-vg ★★
()
Ответ на: комментарий от mono

> поэтому от .h файлов никак не избавишься.

dlopen()

DELIRIUM ☆☆☆☆☆
()

Внимание, в комментариях - специальная олимпиада!
1. Скомпилировать A.h в объектный файл не получится - gcc строг к расширениям файлов, при попытке компилирования заголовочного файла получится прекомпилированный заголовок.
2. Есть мнение, что все определения не случайно положены в заголовочный файл - вероятно, там используются шаблоны. В этом случае, ответ «никак».
3. Если шаблонов нет, то можно переименовать заголовочный файл в A.C (или A.c) и скомпилировать, а потом сделать из объектника библиотеку. Тогда чтобы ее использовать, придется в использующем ее коде явно писать все объявления функций, которые были в хидере.

Vamp
()

думаю, Вам туториал по библиотекоделанью нужнее чем ответ на Ваш вопрос

shty ★★★★★
()

Либо выноси реализации методов в *.cpp, либо если класс шаблонный — смирись.

elverion
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.