技术总结:Subversion Client API编程在Windows下进行环境配置详解

开发 项目管理
本文主要介绍一下Windows下使用Subversion Client API编程环境配置,在这里和大家分享一下,希望通过本文的学习大家能够学到更多关于Subversion client的知识。

本节主要讲解一下Windows下使用Subversion Client API编程环境配置问题,这里就向大家简单介绍一下,欢迎大家能和我一起学习Subversion Client 。
当我把编译subversion需要的头文件和依赖的库都配好时,编译能通过,链接却总有问题。当时想找篇使用subversionclientapi编程的指导文档,好难,网上的相关文章很少,周围的人也都不熟悉subversion,摸索了一个多周,总算迈出最艰难的***步。小结一下,希望各位大虾不吝赐教。
当时我的Subversion Client API环境如下:
[OS]
WindowsXPProfessional版本2002ServicePack2
[IDE]
VisualC++6.0?
[Subversion1.4.2]
http://subversion.tigris.org/downloads/subversion-1.4.2.zip
[TortoiseSVN1.4.1]
http://nchc.dl.sourceforge.net/s...win32-svn-1.4.2.msi
[必须的头文件和静态库]??
1)subversion自身API头文件和静态库:
http://subversion.tigris.org/downloads/svn-win32-1.4.2_dev.zip?
2)subversion依赖的头文件和库:
http://subversion.tigris.org/downloads/subversion-deps-1.4.2.zip
http://subversion.tigris.org/fil...n-win32-libintl.zip??
http://subversion.tigris.org/fil...db-4.4.20-win32.zip
[需要加入vc动态链接库的lib文件]??
 

  1. ibsvn_client-1.lib  
  2. libsvn_delta-1.lib  
  3. libsvn_diff-1.lib  
  4. libsvn_fs-1.lib  
  5. libsvn_fs_base-1.lib  
  6. libsvn_fs_fs-1.lib  
  7. libsvn_ra-1.lib  
  8. libsvn_ra_dav-1.lib  
  9. libsvn_ra_local-1.lib?  
  10. libsvn_ra_svn-1.lib  
  11. libsvn_repos-1.lib  
  12. libsvn_subr-1.lib  
  13. libsvn_wc-1.lib  
  14. libapr.lib  
  15. libaprutil.lib  
  16. xml.lib  
  17. libneon.lib  
  18. intl3_svn.lib  
  19. libdb44s.lib  
  20. WS2_32.Lib  
  21. shfolder.lib  

注意:起初我没有加入shfolder.lib,结果链接的时候有如下错误:
libsvn_subr-1.lib(config_win.obj):errorLNK2001:unresolvedexternalsymbol__imp__SHGetFolderPathA@20??
libsvn_subr-1.lib(config_win.obj):errorLNK2001:unresolvedexternalsymbol__imp__SHGetFolderPathW@20?
Debug/mini_client.exe:fatalerrorLNK1120:2unresolvedexternals
就是这个困扰我很久,后来经老张帮助才查到,SHGetFolderPath是Windwos动态链接库shell32.dll的一个函数。MSDN2005对这个函数有如下注释:
 

  1. ThisfunctionisasupersetofSHGetSpecialFolderPath,includedwithearlierversionsoftheShell.OnsystemspreceedingthoseincludingShell32.dllversion5.0(WindowsMillenniumEdition(WindowsMe)andWindows2000),SHGetFolderPathwasobtainedthroughSHFolder.dll,distributedwithMicrosoftInternetExplorer4.0andlaterversions.SHFolder.  
  2. dllalwayscallsthecurrentplatform'sversionofthisfunction.Ifthatfails,itwilltrytosimulatetheappropriatebehavior.SHFolder.dllcontinuestobeincludedforbackwardcompatibility,thoughthefunctionisnowimplementedinShell32.dll.?  
  3. NoteOnoldersystemsthatrequiretheredistributableSHFolder.dll,youmustexplicitlylinktoSHFolder.libbeforeyoulinktoShell32.lib.  
  4.  

 

这就是为什么必须要加入shfolder.lib的原因了。
Subversion Client 环境配置时还有一点需要注意:??
需要在VC的"projectsetting"对话框-〉"C/C++"选项-〉"UseruntimeLibrary"下拉菜单中选择"DebugMultithreadedDll";也就是相当于将ProjectOptions的第二个参数改为/MDd。否则会出现下面的错误:

  1. Linking...??  
  2. MSVCRT.lib(MSVCRT.dll):errorLNK2005:_strncmpalreadydefinedinLIBC.lib(strncmp.obj)??  
  3. MSVCRT.lib(MSVCRT.dll):errorLNK2005:_freealreadydefinedinLIBC.lib(free.obj)??  
  4. MSVCRT.lib(MSVCRT.dll):errorLNK2005:_strchralreadydefinedinLIBC.lib(strchr.obj)??  
  5. MSVCRT.lib(MSVCRT.dll):errorLNK2005:_callocalreadydefinedinLIBC.lib(calloc.obj)?  
  6. MSVCRT.lib(MSVCRT.dll):errorLNK2005:_mallocalreadydefinedinLIBC.lib(malloc.obj)??  
  7. MSVCRT.lib(MSVCRT.dll):errorLNK2005:__closealreadydefinedinLIBC.lib(close.obj)?…...  
  8. MSVCRT.lib(MSVCRT.dll):errorLNK2005:__writealreadydefinedinLIBC.lib(write.obj)?  
  9. LINK:warningLNK4098:defaultlib"MSVCRT"conflictswithuseofotherlibs;use/NODEFAULTLIB:library??  
  10. Debug/mini_client.exe:fatalerrorLNK1169:oneormoremultiplydefinedsymbolsfound??  
  11. Errorexecutinglink.exe.  

OK!现在从http://svn.collab.net/repos/svn/tags/1.3.2/tools/examples/下载minimal_client.c(一个小的subversionclientapi演示程序)就能编译运行了。本节Windows下使用Subversion Client API编程环境配置 到这里讲解完毕。

【编辑推荐】

  1. 三大主流Subversion客户端初探
  2. Subversion客户端使用详解
  3. 技术指导:详解Tortoise Subversion客户端使用方法 上篇
  4. 技术指导:详解Tortoise Subversion客户端使用方法 下篇
  5. MyEclipse下配置SVN专家全程指导

 

责任编辑:佚名
相关推荐

2010-05-13 10:26:42

Subversion配

2010-05-18 09:07:14

Subversion安

2010-05-18 12:50:47

Subversion配

2010-05-18 17:39:28

Subversion配

2011-08-09 13:34:53

SubversionXCodeMac

2010-05-18 18:19:07

Subversion服

2010-06-02 11:16:31

2010-01-12 15:13:37

Visual C++环

2010-05-18 17:12:11

Subversion安

2010-05-12 17:04:31

Subversion

2010-05-17 14:11:35

Subversion

2010-05-17 16:11:44

2010-05-12 18:05:45

linux下subvesubversionapache配置

2009-07-07 11:17:14

JDK1.4环境配置

2010-05-24 16:21:55

SVNServer安装

2010-05-25 12:59:00

Subversion

2010-05-24 16:21:55

SVNServer安装

2010-07-26 16:28:40

Perl开发环境

2011-08-25 15:10:49

LUAWindows环境配置

2010-06-01 09:59:00

SVN客户端安装及环境
点赞
收藏

51CTO技术栈公众号