Следуя за хвостами мой предыдущий (отвеченный) вопрос ...
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) Когда я это сделал, мой Приложение работает правильно.