Преобразуйте Статическую Библиотеку в Общую Библиотеку (создайте libsome.so из libsome.a): где мои символы?

заголовок этого вопроса является точной простофилей, но ответы в том вопросе не помогают мне.

У меня есть набор объектных файлов, упакованных в статической библиотеке:

% g++ -std=c++98 -fpic -g -O1 -c -o foo.o foo.cpp
% g++ -std=c++98 -fpic -g -O1 -c -o bar.o bar.cpp
% ar -rc libsome.a foo.o bar.o

Я хотел бы генерировать libsome.so от libsome.a вместо объектных файлов, но библиотека является действительно скелетами:

% g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so libsome.a
% nm -DC libsome.so
0000xxxx A _DYNAMIC
0000xxxx A _GLOBAL_OFFSET_TABLE_
         w _Jv_RegisterClasses
0000xxxx A __bss_start
         w __cxa_finalize
0000xxxx A _edata
0000xxxx A _end
0000xxxx T _fini
0000xxxx T _init

статическая библиотека в порядке, или по крайней мере я отлично могу связаться, она к исполняемому файлу и иметь его выполняет содержавшую функциональность. также, все прекрасно, если я создаю libsome.so из foo.o и bar.o.

11
задан Community 23 May 2017 в 12:00
поделиться

2 ответа

Квотирование целых чисел в SQL имеет лишь незначительный штраф за производительность. Удаление кавычек намного меньше работы, чем преобразование представления ASCII в двоичное целое число.

Поэтому я бы сказал, что это вполне приемлемо, особенно для структуры RAD.

-121--4349494-

Можно создать консольное приложение, а затем изменить его свойства в параметрах настройки проекта на приложение Windows (а не консоль). Также можно создать приложение Windows Forms, которое не создает формы.

-121--4716432-

Предполагая, что используется компоновщик GNU, необходимо указать параметр --whole-archive, чтобы получить все содержимое статического архива. Поскольку это вариант линкера, вам нужно будет -Wl сказать gcc, чтобы передать его линкеру:

g++ -std=c++98 -fpic -g -O1 -shared -o libsome.so -Wl,--whole-archive libsome.a

Если вы делали что-то более сложное там, где вы хотите всю библиотеку, но только часть поддержки библиотеки, необходимой libsome, вы хотели бы отключить весь архив после того, как вы использовали его на libsome:

... -Wl,--whole-archive libsome.a -Wl,--no-whole-archive libsupport.a

Если линкер GNU не используется, необходимо проверить, поддерживает ли линкер его и как он называется. В линкере Sun он называется -z allextract и -z defaultextract .

23
ответ дан 3 December 2019 в 04:32
поделиться

, Вопреки какой документация для NetworkStream. Читать , подразумевает, поток, полученный из , TcpClient делает не , просто возвращение 0 для числа байтов читало, когда нет никаких доступных данных - это блокирует.

Если вы посмотрите документация для TcpClient, то вы будете видеть эту линию:

класс TcpClient предоставляет простые методы для соединения, отправки и получения данных о потоке по сети в синхронный метод блокирования.

Теперь я думаю, что если ваш Read вызов блокируется, это потому, что сервер решил не отправлять какие-либо данные обратно. Вероятно, это связано с тем, что первоначальный запрос не проходит должным образом.

Мое первое предложение состоит в том, чтобы исключить StreamWriter в качестве возможной причины (то есть, буферизация/кодирование нюансов) и записать непосредственно в поток с помощью метода StartStream.Write . В этом случае убедитесь, что для StreamWriter используются правильные параметры.

Второе предложение состоит в том, чтобы не зависеть от результата вызова Read , чтобы разорвать петлю. Для класса StartStream задано свойство DataAvailable . Правильный способ записи цикла получения:

NetworkStream netStream = client.GetStream();
int read = 0;
byte[] buffer = new byte[1024];
StringBuilder response = new StringBuilder();
do
{
    read = netStream.Read(buffer, 0, buffer.Length);
    response.Append(Encoding.ASCII.GetString(buffer, 0, read));
}
while (netStream.DataAvailable);
-121--3603183-

Файлы не извлекаются из файла .a, поскольку на них ничего не ссылается. Почему ты сначала создаешь файл? Вам бы повезло создать файл .o, связав их с опцией -r.

1
ответ дан 3 December 2019 в 04:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: