Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Удаление имен файлов из статической библиотеки


Автор: opiate 12.10.2012, 09:27
Добрый день!
Использую компиллятор VS2008, тип проекта - статическая библиотека. Опции пока стандартные для Release конфигурации.
Debug information format - Disabled;
После создания библиотеки просматриваю её HEX редактором и вижу, помимо имен экспортируемых функций, так же полные пути к исходным кодам, obj-файлам, h-никам, опциям компилятора. Как мне сделать чтобы остались только имена функций?

Автор: bsa 12.10.2012, 14:25
статическая библиотека - это архив в формате ar. Этот архив содержит все объектные файлы, что соответствующие исходникам. Почему в объектных файлах содержится информация о путях в этим исходникам я, к сожалению, уже подсказать не могу.

Автор: opiate 12.10.2012, 15:29
Хм... действительно, в начале lib-файла заголовок !<arch> и открывается 7zip-ом, я такого не ожидал.
Но вопрос все равно открыт.
Похоже, что в obj-файлы записываются полные команды компилляции с некоторыми опциями проекта и полными путями, включая папки, в которых надо искать h-ники. Есть даже полный путь до самого cl.exe
Вот, например (скопировано из hex-редактора):
Код

C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.exe.cmd.-Od -ID:\Projects\MyProject\ -ID:\Projects\MyProject\Test\ -DWIN32 -D_DEBUG -D_LIB -D_UNICODE -DUNICODE -FD -EHs -EHc -RTC1 -MTd -FoR:\MyProject\Debug\ -FdR:\MyProject\Debug\vc90.pdb -W3 -c -Z7 -TC -nologo -errorreport:prompt -I"D:\Microsoft SDKs\Windows\v7.1\Include"

Автор: feodorv 12.10.2012, 16:15
Цитата(opiate @  12.10.2012,  10:27 Найти цитируемый пост)
Опции пока стандартные для Release конфигурации.


Цитата(opiate @  12.10.2012,  16:29 Найти цитируемый пост)
-D_DEBUG -FoR:\MyProject\Debug\ -FdR:\MyProject\Debug\vc90.pdb -W3 -c -Z7


http://msdn.microsoft.com/en-us/library/958x11bc%28v=VS.90%29.aspx

Автор: boostcoder 12.10.2012, 18:03
opiate, а как это может мешать?
или ты решил выдать чужой код за свой?

Автор: opiate 12.10.2012, 18:08
feodorv, видимо, я не из той либы выдернул эту строчку. 
В общем для точности создал проект с одним файлом и одной функцией и с компилировал в Release (только заменил опцию /Zi на Disabled).
В результате из этой либы видно какой версии и куда у меня установлена Visual Studio, какой разрядности система, в какой папке лежит мой проект, имя исходника, опции компилятора, и т.д. и т.п.

Добавлено через 5 минут и 22 секунды
Цитата(boostcoder @ 12.10.2012,  18:03)
opiate, а как это может мешать?
или ты решил выдать чужой код за свой?

Не поверишь, но иногда приходится делать наоборот.

Автор: boostcoder 12.10.2012, 20:39

Цитата(opiate @  12.10.2012,  18:08 Найти цитируемый пост)
иногда приходится делать наоборот

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

Автор: opiate 12.10.2012, 21:22
boostcoder, почему на каждом форуме всегда найдется тип, вроде тебя, с 5330 сообщений, и вместо того, чтобы помочь по делу, задает какие-то бесполезные вопросы? Рекламируешь то что у тебя в подписи или просто любишь поговорить ни о чем?

Автор: boostcoder 12.10.2012, 23:33
Цитата(opiate @  12.10.2012,  21:22 Найти цитируемый пост)
вместо того, чтобы помочь по делу

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

Автор: opiate 13.10.2012, 14:00
Цитата(boostcoder @  12.10.2012,  23:33 Найти цитируемый пост)
я не считаю нужным помогать

в таком случае, просто не отвечай, если ты, конечно, не занят накруткой сообщений.
Если бы я выдавал чужую библиотеку за свою, в моих интересах было бы, как раз, наличие ссылок на мое рабочее окружение.

Автор: boostcoder 13.10.2012, 14:04
Цитата(opiate @  13.10.2012,  14:00 Найти цитируемый пост)
в моих интересах было бы, как раз, наличие ссылок на мое рабочее окружение.

я об этом и говорил раньше

я так и не понял, для чего это нужно. хотя, была любопытна аргументация.

Автор: opiate 13.10.2012, 15:47
Цитата(boostcoder @  13.10.2012,  14:04 Найти цитируемый пост)
я так и не понял, для чего это нужно

я ответил для чего это нужно. сомневаешься - создай свою тему и флуди дальше там.

Свою задачу я уже давно решил, но довольно прямолинейно. 
Хотелось бы просто выяснить, нельзя ли это сделать более эстетическим способом, например установкой ключа компиллятора или линкера. Уточню, что нужно, чтобы в obj-файлы не включалась информация о каких либо файлах и директориях из которых происходит сборка статической библиотеки.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)