是否有更简单的Windows C ++ Subversion API或minimal_client.c的示例.vcproj?

时间:2009-07-09 14:28:21

标签: c++ windows visual-studio svn

关注my previous (answered) question ...

的尾巴

SharpSvn使Subversion客户端API变得简单:

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

另一方面,如minimal_client.c所示,从C / C ++调用客户端API需要编码“更接近金属”,就像在Subversion上一样。

Visual Studio 2003中是否有用于C ++的Windows库提供比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,   版本= 1.0.3477.16033,   Culture = neutral,PublicKeyToken = null。

我尝试过各种libsvn_ .lib和svn _ .lib的组合无济于事。

对我做错了什么的想法?

编辑:我开始使用“Win32控制台项目”(仍在VS2003中),我现在可以调试我的应用程序的前几行。但现在,在这一行:

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

我得到不同的异常(在调试器中或在没有调试的情况下启动发布版本):

  

0x7c91b21a处的未处理异常   Win32ConsoleProject_minimal_client.exe:   0xC0000005:访问冲突写入   位置0x00000010。

编辑This thread说明此错误是我的应用中svn和stderr之间的CRT不匹配。如果我不想构建Svn以便它们匹配(我不想),我可以传递NULL而不是stderr(假设我愿意做没有消息去stderr)当我这样做时,我的应用程序正确运行。

2 个答案:

答案 0 :(得分:3)

似乎C ++包装器并没有溢出'net。但是,您可能需要尝试SVNCPP,它可以从RapidSVN中暂停。

有关详细信息,请参阅http://rapidsvn.tigris.org/(注意:我没有尝试过)。

答案 1 :(得分:0)

您可以升级到Visual C ++ 2005吗?如果是这样,你可以使用SharpSvn和C ++ / CLI。

或者甚至可能坚持使用VC2003并使用托管C ++进行SharpSvn? (并不是说我对if如果od有任何了解)

编辑:哦,SharpSvn的主页明确指出VC ++ 2005 SP1 需要......