代码之家  ›  专栏  ›  技术社区  ›  JeffH

是否有一个更简单的Windows C++SubaseAPI或一个例子?

  •  5
  • JeffH  · 技术社区  · 16 年前

    尾随 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);
    

    另一方面,从C/C++中调用客户端API,如图所示 minimal_client.c 需要编码“更接近金属”,因为它是,在颠覆。

    VisualStudio 2003中有C++的Windows库,它提供了一个比MINALALL客户机使用的界面更简单的接口吗?

    如果没有, 是否有一个VS2003 C++项目(A.VCPROJ文件)演示了如何让MILALL客户端运行? 我可以编译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 从装配 极小客户端 版本=1.0.3477.16033, 区域性=中性,PublicKeyToken=空。

    我尝试过各种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以便它们匹配(我不想),那么我可以传递空值而不是stderr(前提是我愿意这样做,而不需要发送到stderr的消息),当我这样做时,我的应用程序一直运行正常。

    2 回复  |  直到 16 年前
        1
  •  3
  •   Raphaël Saint-Pierre    16 年前

    看来C++包装器并没有溢出“网”。但是,您可能需要尝试SVNCPP,它可以从RapidSVN连接。

    http://rapidsvn.tigris.org/ 详细信息(注:我没有尝试过)。

        2
  •  0
  •   Raphaël Saint-Pierre    16 年前

    你能升级到Visual C++ 2005吗?如果是的话,你可以用C++和CLI来使用SharpSvn。

    或者甚至坚持VC2003,去SharpSvn与管理C++?(我不知道怎么做,即使是在国际单项体育联合会)

    编辑:哦,Sharpsvn的主页明确指出VC++2005 SP1 必修的。。。