关注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)当我这样做时,我的应用程序正确运行。
答案 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 是需要......