2009-07-09 2 views
5

Im Anschluss an den Schwänzen von my previous (answered) question ...Gibt es eine einfachere Windows C++ Subversion API oder ein Beispiel .vcproj für minimal_client.c?

SharpSvn macht die Subversion-Client-API einfach anrufen:

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

Auf der anderen Seite, die Client-API von C/C++ Aufruf, wie in minimal_client.c gezeigt erfordert Kodierung "näher an das Metall", sozusagen auf Subversion.

Gibt es Windows-Bibliotheken für C++ in Visual Studio 2003, die eine einfachere Schnittstelle bieten als das, was minimal_client verwendet?

Wenn es nicht, ist ein VS2003 C++ Projekt (eine VCPROJ-Datei), die minimal_client zu laufen demonstriert zu bekommen? Ich bin in der Lage minimal_client.c zu kompilieren und verknüpfen sie die folgenden Bibliotheken:

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

aber wenn ich meine Anwendung ausführen (im Debugger oder das Release-Build starten, ohne das Debuggen), läuft es für etwa 20 Sekunden, ohne die erste Zeile des Haupt zu Schlagen() und dann führt diese Ausnahme:

Eine nicht behandelte Ausnahme des Typs ‚System.TypeLoadException‘ aufgetreten in Unknown Module.

Zusätzliche Informationen: Kann lädt nicht Typen apr_pool_t von der Montage minimal_client, Version = 1.0.3477.16033, Culture = neutral, PublicKeyToken = null.

Ich habe verschiedene Kombination von libsvn_ LIB versucht und svn_ LIB ohne Erfolg.

Irgendwelche Gedanken darüber, was ich falsch mache?

EDIT: Ich begann frisch mit „Win32 Console Project“ (noch in VS2003) und ich bin nun in der Lage, die ersten paar Zeilen meiner App zu debuggen. Aber jetzt, auf dieser Linie:

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

Ich erhalte eine verschiedene Ausnahme (im Debugger oder das Release-Build starten, ohne das Debuggen):

Unbehandelte Ausnahme bei 0x7c91b21a in Win32ConsoleProject_minimal_client.exe: 0XC0000005 : Zugriffsverletzung beim Schreiben Position 0x00000010.

EDIT: This thread erklärt, dass dieser Fehler eine CRT Diskrepanz zwischen svn und stderr in meiner app.Wenn ich Svn nicht so erstellen will, dass sie übereinstimmen (ich will nicht), kann ich NULL anstelle von stderr übergeben (vorausgesetzt, ich bin bereit, auf Nachrichten zu verzichten, die zu stderr gehen würden) Als ich das tat, mein App lief den ganzen Weg richtig durch.

+0

Ist das ein verwaltetes C++ - Projekt? Hast du es mit einem "normalen" C++ - Projekt versucht? –

+0

@RaphaelSP - Das könnte eines meiner Probleme gewesen sein - siehe meine Bearbeitung. – JeffH

+0

Sind das wirklich 3 Fragen: "Gibt es eine einfachere API?", "Gibt es ein Beispiel für .vcproj?" Und "Warum löst svn_cmdline_init() eine Ausnahme aus?" – JeffH

Antwort

3

Es scheint, dass C++ Wrapper sind nicht das Netz überläuft. Sie können jedoch SVNCPP versuchen, das von RapidSVN erkannt werden kann.

Weitere Informationen finden Sie unter http://rapidsvn.tigris.org/ (Hinweis: Ich habe es nicht versucht).

+0

Das war alles, was ich auch gefunden habe. Sollte ich mir Sorgen machen, dass es "0.9.8" heißt? – JeffH

+1

Ich glaube nicht, es scheint, dass die Anwendung seit mindestens drei Jahren existiert, so dass der C++ Wrapper ziemlich brauchbar sein sollte. Vor allem mit einer Versionsnummer, die nahe bei 1. –

+0

Ich akzeptiere das, weil, zusammen mit Ihrem Kommentar, der beginnt "Ist das ein Managed C++ Projekt?", Ich habe, was ich für jetzt benötigt. Vielen Dank! – JeffH

0

Können Sie auf Visual C++ 2005 aktualisieren? Wenn ja, könnten Sie einfach SharpSvn mit C++/CLI verwenden.

Oder vielleicht sogar VC2003 bleiben und SharpSvn mit Managed C++ gehen? (Nicht, dass ich irgendwelche Kenntnisse über die, wie od auch die if)

edit: oh gut, ausdrücklich SharpSvn die Homepage heißt es, dass VC++ 2005 SP1 ist erforderlich ...

+0

Die Umstände verhindern die Migration nach 2005. – JeffH

Verwandte Themen