2009-07-09 7 views
5

seguito sulle code di my previous (answered) question ...Esiste un'API Subversion di Windows C++ più semplice o un esempio .vcproj per minimal_client.c?

SharpSvn fa chiamare l'Subversion client API semplice:

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

D'altra parte, chiamando l'API client da C/C++, come mostrato in minimal_client.c richiede codifica "più vicino al metallo", per così dire, su Subversion.

Esistono librerie di Windows per C++ in Visual Studio 2003 che presentano un'interfaccia più semplice di quella utilizzata da minimal_client?

Se non ci sono, c'è un progetto VS2003 C++ (un file .vcproj) che illustra ottenere minimal_client a correre? Sono in grado di compilare minimal_client.c e collegarlo con le seguenti librerie:

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

ma quando faccio funzionare la mia domanda (nel debugger o avviare il build di rilascio, senza il debug), viene eseguito per circa 20 secondi senza colpire la prima linea di main() e quindi genera questa eccezione:

un'eccezione di tipo 'System.TypeLoadException' verificato in Unknown modulo.

Ulteriori informazioni: Impossibile caricare il tipo apr_pool_t dall'assemblaggio minimal_client, Version = 1.0.3477.16033, Lingua = il neutro PublicKeyToken = null.

Ho provato varie combinazioni di libsvn_ .lib e svn_ lib inutilmente.

Qualche idea su cosa sto facendo male?

EDIT: Ho iniziato fresco con un "Progetto Console Win32" (ancora in VS2003) e sono ora in grado di eseguire il debug le prime righe del mio app. Ma ora, su questa linea:

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

ottengo un diverso un'eccezione (nel debugger o avviare il build di rilascio senza eseguire il debug):

Eccezione non gestita a 0x7c91b21a in Win32ConsoleProject_minimal_client.exe: 0xC0000005 : Violazione dell'accesso scrivendo la posizione 0x00000010.

EDIT: This thread spiega che questo errore è una mancata corrispondenza tra il CRT svn e stderr nella mia app.Se non voglio creare Svn in modo che corrisponda (non voglio), posso passare NULL invece di stderr (a condizione che sia disposto a fare a meno dei messaggi che andrebbero a stderr) Quando l'ho fatto, il mio l'app ha funzionato correttamente.

+0

È un progetto gestito C++? Hai provato con un progetto C++ "regolare"? –

+0

@RaphaelSP - Potrebbe essere stato uno dei miei problemi: vedere la mia modifica. – JeffH

+0

Sono davvero 3 domande: "Esiste un'API più semplice?", "Esiste un esempio .vcproj?" E "Perché svn_cmdline_init() genera un'eccezione?" – JeffH

risposta

3

Sembra che wrapper C++ non sono traboccante della rete. Tuttavia, potresti provare SVNCPP, che può essere digitato da RapidSVN.

Vedere http://rapidsvn.tigris.org/ per dettagli (nota: non l'ho provato).

+0

Questo è tutto ciò che ho trovato anch'io. Dovrei essere preoccupato che si chiami "0.9.8"? – JeffH

+1

Non credo, sembra che l'applicazione sia in circolazione da almeno tre anni, quindi il wrapper C++ dovrebbe essere abbastanza utilizzabile. Soprattutto con un numero di versione che si avvicina a 1. –

+0

Accetto questo perché, insieme al tuo commento che inizia "È un progetto C++ gestito?", Ho ottenuto ciò di cui avevo bisogno per ora. Grazie! – JeffH

0

È possibile eseguire l'aggiornamento a Visual C++ 2005? Se è così, potresti semplicemente usare SharpSvn con C++/CLI.

Oppure, magari, attenersi al VC2003 e passare a SharpSvn con Managed C++? (Non che io abbia alcuna conoscenza sul modo od anche il se)

edit: vabbè, l'homepage di SharpSvn afferma esplicitamente che VC++ 2005 SP1 è richiesto ...

+0

Le circostanze impediscono la migrazione fino al 2005. – JeffH

Problemi correlati