Есть ли более простой Windows C ++ Subversion API или пример .vcproj для minimal_client.c? - PullRequest
5 голосов
/ 09 июля 2009

Следуя за хвостами мой предыдущий (отвеченный) вопрос ...

SharpSvn упрощает вызов API клиента Subversion:

SvnClient client = new SvnClient();
client.Authentication.DefaultCredentials = new NetworkCredential(username, password);
client.CheckOut(new Uri("http://xxx.yyy.zzz.aaa/svn/repository"), workingCopyDir);

С другой стороны, для вызова клиентского API из C / C ++, как показано в minimal_client.c , требуется кодирование «ближе к металлу» как бы в Subversion.

Существуют ли библиотеки Windows для C ++ в Visual Studio 2003, которые предоставляют более простой интерфейс, чем тот, который использует minimal_client?

Если их нет, существует ли проект VS2003 C ++ (файл .vcproj), который демонстрирует, как запустить minimal_client? Я могу скомпилировать minimal_client.c и ссылку это с использованием следующих библиотек:

libsvn_client-1.lib libsvn_delta-1.lib libsvn_diff-1.lib libsvn_fs-1.lib libsvn_fs_base-1.lib libsvn_fs_fs-1.lib libsvn_ra-1.lib libsvn_ra_local-1.lib libsvn_ra_svn-1.lib libsvn_repos-1.lib libsvn_subr-1.lib libsvn_wc-1.lib libapr-1.lib libaprutil-1.lib xml.lib libneon.lib

но когда я запускаю свое приложение (в отладчике или запускаю сборку релиза без отладки), оно запускается около 20 секунд без нажатия первой строки main (), а затем выдает это исключение:

Необработанное исключение типа «System.TypeLoadException» произошло в Неизвестный модуль.

Дополнительная информация: не удалось загрузить тип apr_pool_t со сборки minimal_client, Version = 1.0.3477.16033, Культура = нейтральная, PublicKeyToken = ноль.

Я пробовал разные комбинации libsvn_ .lib и svn_ .lib безрезультатно.

Есть мысли о том, что я делаю не так?

РЕДАКТИРОВАТЬ : Я только начал работать с "Win32 Console Project" (все еще в VS2003), и теперь я могу отлаживать первые несколько строк моего приложения. Но теперь на этой строчке:

if (svn_cmdline_init ("minimal_client", stderr) != EXIT_SUCCESS)

Я получаю другое исключение (в отладчике или запустить сборку релиза без отладки):

Необработанное исключение в 0x7c91b21a в Win32ConsoleProject_minimal_client.exe: 0xC0000005: Запись о нарушении доступа местоположение 0x00000010.

РЕДАКТИРОВАТЬ : Этот поток объясняет, что эта ошибка является несовпадением CRT между svn и stderr в моем приложении. Если я не хочу создавать Svn, чтобы они соответствовали (я не хочу), я могу передать NULL вместо stderr (при условии, что я хочу обойтись без сообщений, которые будут отправлены в stderr) Когда я это сделал, мой Приложение работает правильно.

Ответы [ 2 ]

3 голосов
/ 09 июля 2009

Кажется, что оболочки C ++ не переполняют сеть. Тем не менее, вы можете попробовать SVNCPP, который можно найти из RapidSVN.

Подробнее см. http://rapidsvn.tigris.org/ (примечание: я не пробовал).

0 голосов
/ 09 июля 2009

Можете ли вы перейти на Visual C ++ 2005? Если это так, вы можете просто использовать SharpSvn с C ++ / CLI.

Или даже, может быть, придерживаться VC2003 и перейти SharpSvn с Managed C ++? (не то, чтобы у меня были какие-либо знания о том, как даже если)

edit: да ладно, домашняя страница SharpSvn прямо заявляет, что VC ++ 2005 SP1 требуется ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...