c ++ простая условная регистрация - PullRequest
3 голосов
/ 18 марта 2010

Отказ от ответственности: я не разработчик C ++, я могу делать только основные вещи. (Я понимаю указатели, просто мои знания настолько ржавые, я не касался c / c ++ около 20 лет :))

Настройка: у меня есть надстройка Outlook, написанная на C # /. Net 1.1. Для загрузки используется c ++ shim .

Обычно это работает довольно хорошо, и я использую в своем коде c # nlog для ведения журнала. Но иногда надстройка не загружается, т.е. для меня это не касается управляемого кода, чтобы я мог исследовать проблему из файлов журнала.

Итак, мне нужно подключить простую регистрацию в shim c ++ - просто записать в файл. Мне нужно сделать его максимально простым для наших пользователей. На самом деле я бы предпочел не отправлять его по умолчанию.

Я думал о чем-то, что проверит, присутствует ли конкретная dll (dll для ведения журнала), и, если да, ее использовать. В противном случае, он просто не будет ничего регистрировать. Таким образом, когда у меня есть пользователь с такими проблемами, я могу отправить ему только лог-файл журнала, пользователь сохранит его в каталоге времени выполнения, и у меня будет файл.

Я полагаю, что это должно быть сделано с какой-то формой заводского решения, которое возвращает либо фиктивный логгер, либо, если dll найден, реальный.

Другим вариантом может быть создание какого-либо простого регистратора и перестройка прокладки с использованием или без него на основе директив. Это не желательный подход, потому что прокладка должна быть подписана, и я должен поручить пользователю сделать резервную копию «реальной», затем восстановить, когда это будет сделано, и т. Д., Вместо того, чтобы просто сохранить и удалить DLL .

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

Приветствия

Ответы [ 2 ]

2 голосов
/ 18 марта 2010

Загрузка швов в логирующей dll - это сложный способ решения проблемы конфигурации. Почему бы не использовать реестр. Если вы используете условную загрузку на dll, вы будете использовать LoadLibrary и GetProceAddress, и, как вы сказали, вы на самом деле не кодер c ++, так зачем вводить сложность. Также должно быть доступно n + 1 библиотек c ++, если вы изучали какие-либо из них.


Некоторые из них я нашел после поиска в Google

1 голос
/ 18 марта 2010

Почему бы не иметь ключ реестра для этого? Пользователь открывает regedit, добавляет ключ, и ваша библиотека начинает регистрироваться. Код регистрации будет постоянно, только не вызываться, когда ключ отсутствует или установлен как «без регистрации».

...