Windows下編譯使用AliyunOSSCSDK

鳴鏑發表於2016-07-23

Visual Studio(VS)是win平臺下,編譯執行C/C++程式的首選。微軟釋出的VS主要版本如下表:

名稱 內部版本 釋出日期 支援.NET Framework版本
Visual Studio 6.0 6.0 1998-06
Visual Studio .NET 2002 7.0 2002-02-13 1.0
Visual Studio .NET 2003 7.1 2003-04-24 1.1
Visual Studio 2005 8.0 2005-11-07 2.0 
Visual Studio 2008 9.0 2007-11-19 2.0、3.0、3.5 
Visual Studio 2010 10.0 2010-04-12 2.0、3.0、3.5、4.0 
Visual Studio 2012 RTM 11.0 2012-08-25 2.0、3.0、3.5、4.0、4.5
Visual Studio 2013 12.0 2013-10-17 2.0、3.0、3.5、4.0、4.5、4.5.1、4.5.2 
Visual Studio 2015 14.0 2014-11-10 2.0、3.0、3.5、4.0、4.5、4.5.1、4.5.3、4.5.5、4.6
Visual Studio 2015 RTM 14.0 2015-07-21 2.0、3.0、3.5、4.0、4.5、4.5.1、4.5.3、4.5.5、4.6、5.0、6.0 

本文以 VS2008、VS2010、VS2012、VS2013、VS2015 為例說明編譯OSS C SDK、執行示例程式的方法。

編譯Aliyun OSS C SDK

VS2008

1. 開啟工程
選擇oss_c_sdk_2008.sln右鍵開啟方式中選擇Microsoft Visual Studio 2008開啟。
如果右鍵開啟方式中沒有Microsoft Visual Studio 2008,先開啟Visual Studio 2008,在VS2008中開啟工程,方法是 File-> Open -> Project/Solution 選擇oss_c_sdk_2008.sln開啟。

2. 設定啟動工程
把工程oss_c_sdk_test設定為啟動工程,方法在在oss_c_sdk_test右鍵選擇Set as StartUp Project

3. 編譯
在Solution Explorer中選擇oss_c_sdk_test,右鍵選擇Rebuild。編譯出的OSS C SDK庫,在工程目錄下的

4. 可能出現的問題

  • 錯誤: error LNK2019: unresolved external symbol _oss_create_live_channel referenced in function _create_test_live_channel
    原因: 新加的檔案oss_live.c等沒有加入工程

解法: oss_c_sdk右鍵選擇Add -> Existing Item...,選擇oss_c_sdk目錄下的所有.h、.c檔案,加入工程oss_c_sdk

  • 錯誤: error LNK2019: unresolved external symbol __imp__inet_addr@4 referenced in function _is_valid_ip
    原因: oss_c_sdk_test中缺少庫ws2_32.lib

解法: oss_c_sdk_test右鍵選擇Properties -> Configuration Properties -> Linker -> Input -> Additional Dependencies中加入ws2_32.lib

  • 錯誤: fatal error C1083: Cannot open include file: `stdint.h`: No such file or directory
    原因: 缺少標頭檔案stdint.h

解法: third_party/include裡的stdint.h.bak修改成stdint.h

5. 庫位置
編譯出來的OSS C SDK庫,在工程目錄的Debug/Release裡,即oss_c_sdk.lib。

VS2010

1. 開啟工程
選擇oss_c_sdk.sln右鍵開啟方式中選擇Microsoft Visual Studio 2010開啟。

2. 設定啟動工程
把工程oss_c_sdk_test設定為啟動工程,方法在在oss_c_sdk_test右鍵選擇Set as StartUp Project

3. 編譯
在Solution Explorer中選擇oss_c_sdk_test,右鍵選擇Rebuild。編譯出的OSS C SDK庫,在工程目錄下的

4. 可能出現的問題

  • 錯誤: error MSB8008: Specified platform toolset (v140) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.
    原因: PlatformToolset值與當前VS版本不符

解法: 按照如下路徑 Solution Explorer -> oss_c_sdk -> Properties -> Configuration Properties -> Platform Toolset,修改V140V100

5. 庫位置
編譯出來的OSS C SDK庫,在工程目錄的Debug/Release裡,即oss_c_sdk.lib。

VS2012

1. 開啟工程
選擇oss_c_sdk.sln右鍵開啟方式中選擇Microsoft Visual Studio 2012開啟。

2. 設定啟動工程
把工程oss_c_sdk_test設定為啟動工程,方法在在oss_c_sdk_test右鍵選擇Set as StartUp Project

3. 編譯
在Solution Explorer中選擇oss_c_sdk_test,右鍵選擇Rebuild。編譯出的OSS C SDK庫,在工程目錄下的

4. 可能出現的問題

  • 錯誤: error MSB8020: The builds tools for v140 (Platform Toolset = `v140`) cannot be found. To build using the v140 build tools, either click the Project menu or right-click the solution, and then select “Update VC++ Projects…”. Install v140 to build using the v140 build tools.
    原因: PlatformToolset值與當前VS版本不符

解法: 按照如下路徑 Solution Explorer -> oss_c_sdk -> Properties -> Configuration Properties -> Platform Toolset,修改V140為Visual Studio 2012 (v110)

5. 庫位置
編譯出來的OSS C SDK庫,在工程目錄的Debug/Release裡,即oss_c_sdk.lib。

VS2013/VS2015

VS2013/VS2015編譯Aliyun OSS C SDK的方法完全相同,下面以VS2015為例說明。

1. 開啟工程
選擇oss_c_sdk.sln右鍵開啟方式中選擇Microsoft Visual Studio 2015/開啟。

2. 設定啟動工程
把工程oss_c_sdk_test設定為啟動工程,方法在在oss_c_sdk_test右鍵選擇Set as StartUp Project

3. 編譯
在Solution Explorer中選擇oss_c_sdk_test,右鍵選擇Rebuild。編譯出的OSS C SDK庫,在工程目錄下的

4. 庫位置
編譯出來的OSS C SDK庫,在工程目錄的Debug/Release裡,即oss_c_sdk.lib。

執行示例程式

下載

有一下兩種方式下載OSS C SDK示例程式aliyun-oss-c-sdk-sample:

執行

aliyun-oss-c-sdk-sample版本里,提供了VS2008、VS2010、VS2012、VS2013、VS2015的示例。

  • 替換oss_c_sdk.lib。在oss-c-sdk-sampleoss-c-sdklibRelease是OSS C SDK包oss_c_sdk.lib。該包是上一個釋出版本的release包,您可以繼續使用,也可以用您編譯出來的版本替換。
  • 開啟工程。根據您的Visual Studio版本,選擇對應的工程。選擇oss-c-sdk-sample.sln右鍵開啟方式中選擇對應VS開啟工程。
  • 修改引數。修改main.c 中的OSS_ENDPOINT、ACCESS_KEY_ID、ACCESS_KEY_SECRET、BUCKET_NAME為您的實際引數。
  • 編譯。在Solution Explorer中選擇oss-c-sdk-sample,右鍵選擇Rebuild。
  • 配置Environment。按照如下路徑配置 Solution Explorer -> oss-c-sdk-sample -> Property -> Configuration Properties -> Debugging -> Environment 修改為 PATH=..oss-c-sdklibRelease;%PATH%
  • 執行。用Ctrl+F5執行示例程式。

揭祕Sample工程

OSS C SDK Sample工程是怎麼做出來的呢?VS2008、VS2010、VS2012、VS2013、VS2015的做法基本相同,下面以VS2012為例說明。

  • 準備庫和標頭檔案。準備SDK庫/標頭檔案,第三方庫/標頭檔案。合併SDK庫/標頭檔案、第三方庫/標頭檔案,結果為oss-c-sdk-sampleoss-c-sdk目錄。oss-c-sdk目錄直接放在工程目錄下。
  • 配置標頭檔案路徑。在路徑 Solution Explorer -> oss-c-sdk-sample -> Property -> Configuration Properties -> VC++ Directories -> Include Directories,新增如下配置:
..oss-c-sdkinclude
..oss-c-sdkincludeapr
..oss-c-sdkincludeaprutil
..oss-c-sdkincludecurl
..oss-c-sdkincludemxml
..oss-c-sdkincludesdk
  • 配置庫路徑。在路徑 oss-c-sdk-sample -> Property -> Configuration Properties -> Linker -> General -> Additional Library Directories,新增 ..oss-c-sdklibRelease
  • 配置庫。在路徑 oss-c-sdk-sample -> Property -> Configuration Properties -> Linker -> Input -> Additional Dependencies,新增如下配置:
libapr-1.lib
libaprutil-1.lib
curl.lib
mxml1.lib
oss_c_sdk.lib
ws2_32.lib

如果您想從一個空工程開始編寫自己的程式,或者在已有的工程中使用OSS C SDK,請參考Sample工程的配置方法。

提示:

  • 目前OSS C SDK支援WIN32(x86),暫不支援x64;VS2015編譯、執行的時候請選擇x86,勿選擇x64。
  • 您想更多瞭解OSS C SDK,請參看 幫助與文件


相關文章