В нутри релиза содержится данные о классах и методах

Lisichkin
Дата: 25.12.2014 14:05:22
Добрый день!
Собираю на VS 2008 CLR dll для MS SQL (Release)
Смущает, что внутри dll присутствуют данные о классах и методах
….
BaseForecast.GetTol BaseForecast.{ctor} list BaseForecast.ForecastParam ParamName BaseForecast.ForecastParams ?A0x93150492.??__E?tol@BaseForecast@@$$Q1NB@@YMXXZ ?A0x93150492.??__E?A0x93150492@INFO_DISCR@@YMXXZ ExponentialSmoothing.boxConstraints x xb ExponentialSmoothing.{ctor} ExponentialSmoothing.fcn m n fvec iflag ExponentialSmoothing.forecast index ExponentialSmoothing.ForecastParam ExponentialSmoothing.ForecastParams DblExponentialSmoothing.{ctor} _alpha _gamma DblExponentialSmoothing.fcn DblExponentialSmoothing.forecast DblExponentialSmoothing.ForecastParam
….

В релиз, я не хочу помещать отладочную информацию, но она каким-то образом все-равно попадает в dll :(

Помогите настроить параметры компилятора/линкера, что бы исключить отладочную информацию из релиза.

Опции компилятора:
/Ot /GL /D "WIN32" /D "NDEBUG" /D "_WINDLL" /D "_UNICODE" /D "UNICODE" /FD /EHa /MD /Fo"Release\\" /Fd"Release\vc90.pdb" /W3 /nologo /c /clr:pure /TP /errorReport:prompt /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll" /FU "c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.XML.dll"

Опции линкера:
/OUT:"D:\Аптека\cForecast2\Release\cForecast.dll" /INCREMENTAL:NO /NOLOGO /DLL /MANIFEST /MANIFESTFILE:"Release\cForecast.dll.intermediate.manifest" /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /LTCG /NOENTRY /DYNAMICBASE:NO /FIXED:No /MACHINE:X86 /ERRORREPORT:PROMPT
Dimitry Sibiryakov
Дата: 25.12.2014 14:18:14

Lisichkin
В релиз, я не хочу помещать отладочную информацию, но она каким-то образом
все-равно попадает в dll :(

Это не отладочная информация, это RTTI.

Posted via ActualForum NNTP Server 1.5

Lisichkin
Дата: 25.12.2014 14:27:18
Dimitry Sibiryakov
Так почему содержется имена методов? Я думал что в RTTI содержится сдвиги в шестнадцатеричном формате.
Это же Cи а не Java с ее Reflection..
bazile
Дата: 25.12.2014 14:28:54
Lisichkin, похоже ты путаешь отладочную информацию с метаданными .NET. От последних нельзя избавиться т.к. они являются неотъемлемой частью .NET сборок. Ситуация изменится после выхода технологии .NET Native которая позволит компилировать IL код в машинный и получать исполняемый файл без зависимостей от .NET. Однако пока неясно будет ли она работать для сборок создаваемых для MS SQL.

Единственное что можно сделать прямо сейчас это обфусцировать код.
Lisichkin
Дата: 25.12.2014 14:38:43
bazile
Да, про .NET сборку я не подумал, спасибо!

Но тогда почему в исходный dll попадает информация не только о ref class (управляемый класс) но и обычных классах и локальных функциях ??
bazile
Дата: 25.12.2014 15:07:51
Lisichkin, потому что использование /clr:pure означает компиляцию всего кода в IL. Более подробно это описано в заметке C++ CLR Compilation и в MSDN.
mayton
Дата: 25.12.2014 15:13:11
Это пограничный вопрос. Между .Net/C++.
Lisichkin
Дата: 25.12.2014 15:26:19
Пересобрал dll с ключем /clr — "поддержка управляемого и нативного кода"

CREATE ASSEMBLY в MS SQL вывалилась с ошибкой:
CREATE ASSEMBLY for assembly 'cForecast' failed because assembly 'cForecast' is malformed or not a pure .NET assembly.
Unverifiable PE Header/native stub.

Я в коде использую много математических операций, поиск минимума функции нескольких переменных с помощью алгоритма Левенберга — Марквардта, использую быстрое преобразование Фурье, в общем быстрый найтивный код мне необходим...а так получается только обертка под .NET ???
:(
bazile
Дата: 25.12.2014 20:47:22
Lisichkin, возможно ты выбрал неподходящий инструмент для своей задачи. Если тебе нужна максимальная скорость работы кода, то используй расширенные хранимые процедуры написанные на чистом C/C++ без .NET. Или же перенеси расчеты с SQL сервера на сторону клиента.

Lisichkin
а так получается только обертка под .NET ???

Не понял что ты хотел этим сказать.
Anatoly Moskovsky
Дата: 25.12.2014 20:57:06
Lisichkin,

Оставляйте так, как было изначально. Нет ничего страшного в том, что имена классов и методов видны в бинарнике.