libs directory, you can find the ready-to-use precompiled libraries. Choose the one that suits your system version.libs/linux/libcossdk.a # Linux static library. `libcossdk.a` is compiled based on GCC v4.8.5. If your compilation environment uses a different GCC version, you need to compile `libcossdk.a` again.libs/linux/libcossdk-shared.so # Linux dynamic librarylibs/Win32/cossdk.lib # Windows 32-bit librarylibs/x64/cossdk.lib # Windows 64-bit librarylibs/macOS/libcossdk.a # macOS static librarylibs/macOS/libcossdk-shared.dylib # macOS dynamic library
include files for your OS to your project.Third-party directory:third_party/lib/linux/poco/ # Linux-dependent POCO dynamic library. The POCO library is compiled based on OpenSSL v1.0.2. If your compilation environment uses a different OpenSSL version, you need to compile the POCO library again.third_party/lib/Win32/openssl/ # Windows 32-bit-dependent OpenSSL librarythird_party/lib/Win32/poco/ # Windows 32-bit-dependent POCO librarythird_party/lib/x64/openssl/ # Windows 64-bit-dependent OpenSSL librarythird_party/lib/x64/poco/ # Windows 64-bit-dependent POCO librarythird_party/lib/macOS/poco/ # macOS-dependent POCO library
CMakeLists.txt file in the root directory:option(BUILD_UNITTEST "Build unittest" OFF) # Configure unit testing compilationoption(BUILD_DEMO "Build demo" ON) # Configure demo testing code compilationoption(BUILD_SHARED_LIB "Build shared library" OFF) # Configure dynamic library compilation
yum install -y gcc gcc-c++ make cmake openssl# The CMake version should be later than 2.8.
cd ${cos-cpp-sdk}mkdir -p buildcd buildcmake ..make
cd ${cos-cpp-sdk}sh install-libpoco.sh
/usr/lib64 directory and creates a soft link. To use a COS SDK in the production environment, install the POCO library to the production environment as well.cd ${cos-cpp-sdk}vim demo/cos_demo.cpp # Modify the bucket name and testing code in the demovim CMakeLists.txt # Set `BUILD_DEMO` to `ON` in `CMakeLists.txt` to start compiling the democd build && make # Compile the demols bin/cos_demo # The generated executable file is in the `bin` directoryvim bin/config.json # Modify the key and regioncd bin && ./cos_demo # Run the demo
build/lib directory. The static library name is libcossdk.a, and the dynamic library name is libcossdk-shared.so. During actual use, copy the include directory to the include path of your project.${CMake installation path}\\bin in the Path environment variable.cd to the directory of the C++ SDK source code, and run the following command:mkdir buildcd buildcmake .. # Generate the Windows 32-bit Makefilecmake -G "Visual Studio 15 Win64" .. # Generate the Windows 64-bit Makefile
cos_demo.exe file is in the bin directory. You can modify bin/config.json to run cos_demo.exe.build/Release directory. The static library name is cossdk.lib. During actual use, copy the include directory to the include path of your project.brew install gcc make cmake openssl
cd ${cos-cpp-sdk}mkdir -p buildcd buildcmake ..make
third_party/lib/macOS/poco directory. You can install it by yourself.cos_demo is in the bin directory. Copy cos-cpp-sdk-v5/demo/config.json to the bin directory and modify bin/config.json. Then, you can run cos_demo.build/lib directory. The static library name is libcossdk.a, and the dynamic library name is libcossdk-shared.dylib. During actual use, copy the include directory to the include path of your project.PocoCrypto.so.64: undefined reference to `PEM_write_bio_PrivateKey@libcrypto.so.10'libPocoNetSSL.so.64: undefined reference to `X509_check_host@libcrypto.so.10'ibPocoCrypto.so.64: undefined reference to `ECDSA_sign@OPENSSL_1.0.1_EC'libPocoCrypto.so.64: undefined reference to `CRYPTO_set_id_callback@libcrypto.so.10'ibPocoCrypto.so.64: undefined reference to `EVP_PKEY_id@libcrypto.so.10'libPocoNetSSL.so.64: undefined reference to `SSL_get1_session@libssl.so.10'libPocoNetSSL.so.64: undefined reference to `SSL_get_shutdown@libssl.so.10'libPocoCrypto.so.64: undefined reference to `EVP_PKEY_set1_RSA@libcrypto.so.10'libPocoCrypto.so.64: undefined reference to `SSL_load_error_strings@libssl.so.10'
third_party.wget https://github.com/pocoproject/poco/archive/refs/tags/poco-1.9.4-release.zipcd poco-poco-1.9.4-release/./configure --omit=Data/ODBC,Data/MySQLmkdir my_buildcd my_buildcmake ..make -j5
openssl-devel library is not installed.yum install -y openssl-devel
undefined reference to `qcloud_cos::CosConfig::CosConfig(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
libcossdk.a compilation and the GCC version on your device. You need to compile the POCO library and libcossdk.a again.{"SecretId":"********************************", // Replace the value with your `SecretId`, which can be viewed at https://console.tencentcloud.com/cam/capi."SecretKey":"*******************************", // Replace the value with your `SecretKey`, which can be viewed at https://console.tencentcloud.com/cam/capi."Region":"ap-guangzhou", // Bucket region. Replace it with your bucket region, which can be viewed on the overview page in the COS console at https://console.tencentcloud.com/cos5/bucket/. For more information on regions, visit https://www.tencentcloud.com/document/product/436/6224."SignExpiredTime":360, // Signature expiration time in seconds"ConnectTimeoutInms":6000, // Connection timeout period in milliseconds"ReceiveTimeoutInms":60000, // `Receive` timeout period in milliseconds"UploadPartSize":10485760, // Size of the part to be uploaded, which can be 1 MB to 5 GB. Default value: 10 MB."UploadCopyPartSize":20971520, // Size of the copied part for upload, which can be 5 MB to 5 GB. Default value: 20 MB."UploadThreadPoolSize":5, // Size of the upload thread pool for a single multipart upload"DownloadSliceSize":4194304, // Size of the part to be downloaded"DownloadThreadPoolSize":5, // Size of the download thread pool for a single file"AsynThreadPoolSize":2, // Size of the async thread pool for uploads/downloads"LogoutType":1, // Log output type. Valid values: 0 (no output), 1 (output to screen), 2 (output to syslog)."LogLevel":3, // Log level. Valid values: 1 (ERR), 2 (WARN), 3 (INFO), 4 (DBG)."IsDomainSameToHost":false, // Whether to use a specific host"DestDomain":"", // Specific host"IsUseIntranet":false, // Whether to use a specific IP and port number"IntranetAddr":"" // Specific IP and port number, such as `127.0.0.1:80`}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {qcloud_cos::CosConfig config("./config.json");// Token is required for temporary keys but not permanent keys. For more information on how to generate and use a temporary key, visit https://www.tencentcloud.com/document/product/436/14048config.SetTmpToken("xxx");qcloud_cos::CosAPI cos(config);}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"void TestLogCallback(const std::string& log) {std::ofstream ofs;ofs.open("test.log", std::ios_base::app);ofs << log;ofs.close();}int main(int argc, char** argv) {qcloud_cos::CosConfig config("./config.json");config.SetLogCallback(&TestLogCallback);qcloud_cos::CosAPI cos(config);}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to create a bucketstd::string bucket_name = "examplebucket-1250000000"; // Bucket name in the format of `bucketname-appid` (`appid` is required), which can be viewed in the COS console at https://console.tencentcloud.com/cos5/bucket. Replace it with your bucket name.qcloud_cos::PutBucketReq req(bucket_name);qcloud_cos::PutBucketResp resp;// 3. Call the bucket creation APIqcloud_cos::CosResult result = cos.PutBucket(req, &resp);// 4. Process the call resultif (result.IsSucc()) {// Created successfully} else {// Failed to create the bucket. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to query the bucket listqcloud_cos::GetServiceReq req;qcloud_cos::GetServiceResp resp;qcloud_cos::CosResult result = cos.GetService(req, &resp);// 3. Get the response informationconst qcloud_cos::Owner& owner = resp.GetOwner();const std::vector<qcloud_cos::Bucket>& buckets = resp.GetBuckets();std::cout << "owner.m_id=" << owner.m_id << ", owner.display_name=" << owner.m_display_name << std::endl;for (std::vector<qcloud_cos::Bucket>::const_iterator itr = buckets.begin(); itr != buckets.end(); ++itr) {const qcloud_cos::Bucket& bucket = *itr;std::cout << "Bucket name=" << bucket.m_name << ", location="<< bucket.m_location << ", create_date=" << bucket.m_create_date << std::endl;}// 4. Process the call resultif (result.IsSucc()) {// Queried the bucket list successfully} else {// Failed to query the bucket list. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to upload a filestd::string bucket_name = "examplebucket-1250000000"; // Bucket name in the format of `bucketname-appid` (`appid` is required), which can be viewed in the COS console at https://console.tencentcloud.com/cos5/bucket. Replace it with your bucket name.std::string object_name = "exampleobject"; // `exampleobject` is the object key, the unique identifier of the object in the bucket. For example, if an object's access endpoint is `examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`, its key is `doc/pic.jpg`. Replace it with your object name.qcloud_cos::PutObjectByFileReq req(bucket_name, object_name, "/path/to/local/file"); // Replace the value with your file path//req.SetXCosStorageClass("STANDARD_IA"); // `STANDARD_IA` is the default value. You can call the `Set` method to set the storage class.qcloud_cos::PutObjectByFileResp resp;// 3. Call the object uploading APIqcloud_cos::CosResult result = cos.PutObject(req, &resp);// 4. Process the call resultif (result.IsSucc()) {// Uploaded the file successfully} else {// Failed to upload the file. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to query the object liststd::string bucket_name = "examplebucket-1250000000"; // Bucket name in the format of `bucketname-appid` (`appid` is required), which can be viewed in the COS console at https://console.tencentcloud.com/cos5/bucket. Replace it with your bucket name.qcloud_cos::GetBucketReq req(bucket_name);qcloud_cos::GetBucketResp resp;qcloud_cos::CosResult result = cos.GetBucket(req, &resp);std::vector<qcloud_cos::Content> cotents = resp.GetContents();for (std::vector<qcloud_cos::Content>::const_iterator itr = cotents.begin(); itr != cotents.end(); ++itr) {const qcloud_cos::Content& content = *itr;std::cout << "key name=" << content.m_key << ", lastmodified ="<< content.m_last_modified << ", size=" << content.m_size << std::endl;}// 3. Process the call resultif (result.IsSucc()) {// Queried the object list successfully} else {// Failed to query the object list. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to download an objectstd::string bucket_name = "examplebucket-1250000000"; // Bucket name in the format of `bucketname-appid` (`appid` is required), which can be viewed in the COS console at https://console.tencentcloud.com/cos5/bucket. Replace it with your bucket name.std::string object_name = "exampleobject"; // `exampleobject` is the object key, the unique identifier of the object in the bucket. For example, if an object's access endpoint is `examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`, its key is `doc/pic.jpg`. Replace it with your object name.std::string local_path = "/tmp/exampleobject";// `appid`, `bucketname`, `object`, and a local path (including filename) are required for the requestqcloud_cos::GetObjectByFileReq req(bucket_name, object_name, local_path);qcloud_cos::GetObjectByFileResp resp;// 3. Call the object downloading APIqcloud_cos::CosResult result = cos.GetObject(req, &resp);// 4. Process the call resultif (result.IsSucc()) {// Downloaded the file successfully} else {// Failed to download the file. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
#include "cos_api.h"#include "cos_sys_config.h"#include "cos_defines.h"int main(int argc, char *argv[]) {// 1. Specify the path of the configuration file and initialize CosConfigqcloud_cos::CosConfig config("./config.json");qcloud_cos::CosAPI cos(config);// 2. Construct a request to delete an objectstd::string bucket_name = "examplebucket-1250000000"; // Bucket name in the format of `bucketname-appid` (`appid` is required), which can be viewed in the COS console at https://console.tencentcloud.com/cos5/bucket. Replace it with your bucket name.std::string object_name = "exampleobject"; // `exampleobject` is the object key, the unique identifier of the object in the bucket. For example, if an object's access endpoint is `examplebucket-1250000000.cos.ap-guangzhou.myqcloud.com/doc/pic.jpg`, its key is `doc/pic.jpg`. Replace it with your object name.// 3. Call the object deleting APIqcloud_cos::DeleteObjectReq req(bucket_name, object_name);qcloud_cos::DeleteObjectResp resp;qcloud_cos::CosResult result = cos.DeleteObject(req, &resp);// 4. Process the call resultif (result.IsSucc()) {// Deleted the object successfully} else {// Failed to delete the object. You can call the CosResult member functions to output the error information such as the `requestID`.std::cout << "HttpStatus=" << result.GetHttpStatus() << std::endl;std::cout << "ErrorCode=" << result.GetErrorCode() << std::endl;std::cout << "ErrorMsg=" << result.GetErrorMsg() << std::endl;std::cout << "ResourceAddr=" << result.GetResourceAddr() << std::endl;std::cout << "XCosRequestId=" << result.GetXCosRequestId() << std::endl;std::cout << "XCosTraceId=" << result.GetXCosTraceId() << std::endl;}}
Feedback