GithubHelp home page GithubHelp logo

c-sdk's Introduction

Qiniu Resource Storage SDK for C/C++

Build Status

Qiniu Logo

此 C/C++ SDK 适用于 兼容C89标准的C/C++编译器,基于七牛云存储官方API构建。使用此 SDK 构建您的网络应用程序,能让您以非常便捷地方式将数据安全地存储到七牛云存储上。无论您的网络应用是一个网站程序,还是包括从云端(服务端程序)到终端(手持设备应用)的架构的服务或应用,通过七牛云存储及其 SDK,都能让您应用程序的终端用户高速上传和下载,同时也让您的服务端更加轻盈。

使用

参考文档:七牛云存储 C SDK 使用指南

参考代码:C SDK Examples

编译库文件:Linux / Mac / Windows 编译静态或动态库

贡献代码

  1. Fork
  2. 创建您的特性分支 (git checkout -b my-new-feature)
  3. 提交您的改动 (git commit -am 'Added some feature')
  4. 将您的修改记录提交到远程 git 仓库 (git push origin my-new-feature)
  5. 然后到 github 网站的该 git 远程仓库的 my-new-feature 分支下发起 Pull Request

许可证

Copyright (c) 2012-2014 qiniu.com

基于 MIT 协议发布:

c-sdk's People

Contributors

bachue avatar bluntblade avatar carter2000 avatar chzyer avatar fengyhack avatar hantuo avatar icattlecoder avatar jemygraw avatar lianzeng avatar litianqi1996 avatar longbai avatar longshanksmo avatar lyyyuna avatar mei-zhao avatar peteryuanpan avatar wangxiaotao1980 avatar why404 avatar xushiwei avatar xuzhaokui avatar xwen-winnie avatar zhahang avatar zhangzqs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

c-sdk's Issues

windows下使用静态库的方式编译无法通过

你好!
我将c-sdk-for-windows的master分支下的include和lib目录下的文件分别添加到项目的includepath和链接path中(qt项目),编译报错“error: LNK2019: 无法解析的外部符号 Qiniu_Client_Cleanup”,查看Qiniu_Client_Cleanup发现是通过“QINIU_DLLAPI extern void”这种方式声明的。随后我尝试在项目输出目录下加入master分支下bin目录下的dll文件,依然报该错误。再次尝试将dll文件添加到链接path中,编译时出现错误:“error: LNK1107: 文件无效或损坏: 无法在 0x2C8 处读取”。
另外还有一个问题,我看现在项目中有在linux和mac上编译的文档,能否提供一份在windows手动编译的文档呢?

cmake编译

$ cmake -S . -B build -DCMAKE_BUILD_TYPE=RELEASE

cmake编译报错是为什么?tag: v7.1.2, cmake verison: 3.10.x
CMake Error: The source directory "/home/ubuntu/c-sdk/build" does not appear to contain CMakeLists.txt.
Specify --help for usage, or press the help button on the CMake GUI.

关于请求进度和取消请求

你好,在参考官方文档之后,我发现c-sdk没有提供监听请求(上传)进度和取消请求的接口,后面的版本是否可以考虑加上呢?

cmake 编译失败 vs2019 windows x64

N:\qiniu\c-sdk>cmake --build build --config Release
用于 .NET Framework 的 Microsoft (R) 生成引擎版本 16.11.2+f32259642
版权所有(C) Microsoft Corporation。保留所有权利。

MSBUILD : error MSB1009: 项目文件不存在。
开关:ALL_BUILD.vcxproj

N:\qiniu\c-sdk>cmake -DCURL_ROOT=O:\vcpkg\installed\x64-windows\ -DOPENSSL_ROOT_DIR=o:\vcpkg\installed\x64-windows\ -S . -B build
-- Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.19044.
-- Src file: b64/b64.c;b64/urlsafe_b64.c cJSON/cJSON.c qiniu/auth_mac.c;qiniu/base.c;qiniu/base_io.c;qiniu/cdn.c;qiniu/conf.c;qiniu/emu_posix.c;qiniu/fop.c;qiniu/http.c;qiniu/io.c;qiniu/multipart_upload.c;qiniu/qetag.c;qiniu/reader.c;qiniu/recorder.c;qiniu/recorder_key.c;qiniu/recorder_utils.c;qiniu/resumable_io.c;qiniu/rs.c;qiniu/rsf.c;qiniu/tm.c
CMake Error: Error: generator : Visual Studio 16 2019
Does not match the generator used previously: NMake Makefiles
Either remove the CMakeCache.txt file and CMakeFiles directory or choose a different binary directory.

CMake Error at C:/Program Files/CMake/share/cmake-3.20/Modules/FetchContent.cmake:1000 (message):
CMake step for googletest failed: 1
Call Stack (most recent call first):
C:/Program Files/CMake/share/cmake-3.20/Modules/FetchContent.cmake:1141:EVAL:2 (__FetchContent_directPopulate)
C:/Program Files/CMake/share/cmake-3.20/Modules/FetchContent.cmake:1141 (cmake_language)
gtests/CMakeLists.txt:18 (FetchContent_Populate)

-- Configuring incomplete, errors occurred!
See also "N:/qiniu/c-sdk/build/CMakeFiles/CMakeOutput.log".

CMakeOutput.log

在windows下编译不通过

base_io.c里面

`
#if defined(_MSC_VER)

#define Qiniu_Posix_Pread Qiniu_Posix_Pread2

int Qiniu_Posix_Fstat(Qiniu_Posix_Handle fd, Qiniu_FileInfo* fi)
{
int ret = 0;
Emu_FileInfo fi2;

Qiniu_Zero(fi2);
ret = Qiniu_Posix_Fstat2(fd, &fi2);
if (ret < 0) {
	return ret;
}

fi->st_size = (Qiniu_Off_T)fi2.st_size;
fi->st_atime = fi2.st_atime;
fi->st_mtime = fi2.st_mtime;
fi->st_ctime = fi2.st_ctime;
return 0;

}

#else

Qiniu_Error Qiniu_File_Stat(Qiniu_File* self, Qiniu_FileInfo* fi)
{
Qiniu_Error err;
if (Qiniu_Posix_Fstat((Qiniu_Posix_Handle)(size_t)self, fi) != 0) {
err.code = errno;
err.message = "fstat failed";
} else {
#if defined(APPLE) && defined(TARGET_OS_MAC)
fi->st_size >>= 32;
#endif
err = Qiniu_OK;
}
return err;
}

#endif
`
这一段会导致windows visual studio下面Qiniu_File_Stat函数未定义,然后io.c等地方引用这个函数会出错。6.2.5没有这个问题。

c/c++客户端应该是有bug吧

之用用的华东的空间,可以正常上传
最近,我更新为最新的sdk了。
我创建了一个 华南的bucket,用默认的上传程序会报错如下:

incorrect region, please use up-z2.qiniup.com, bucket is: 华南bucket

网上这个问题有好多人遇到,显示七牛在这一点上做的不好。。搜索了好久,才【不经意测试才解决】。听了sdk中的建议,结果走了大弯路。。。

主要代码如下:
Qiniu_Client_InitNoAuth(&qiniuClient, 1024);

//Qiniu_Use_Region("z2",Qiniu_False);//line A 这个无效,报错依旧
Qiniu_Use_Zone_Huanan(Qiniu_False);//line B 这个语句是正常的,程序就可以通过了

可是, conf.h文件中,有如下建议

// 不再推荐使用,建议使用 Qiniu_Use_Region("z2") 方法替代
QINIU_DLLAPI extern void Qiniu_Use_Zone_Huanan(Qiniu_Bool useHttps);

所以,这个建议显然 无效了,旧版的才可以。(另 Qiniu_Use_Region("z2"),不只一个参数。)

补充:sdk 用的是最新的。
再补充:这句会更好一些,自动判断区域。不用指定region
Qiniu_Client_EnableAutoQuery(&qiniuClient, Qiniu_False); /* 启用区域自动查询,无需手动设置区域 */

compile error with openssl 1.1.0

qiniu/auth_mac.c: In function ‘Qiniu_Mac_Auth’:
qiniu/auth_mac.c:54:11: error: storage size of ‘ctx’ isn’t known
HMAC_CTX ctx;

上传策略中多少天删除的问题

你好,我想使用七牛上传策略中的多少天后删除功能,就是deleteAfterDays,这个字段。SDK中没有相应字段,我下载的SDK版本时6.2.5,于是我在SDK中添加了相应字段,在源文件rs.c中char* Qiniu_RS_PutPolicy_Token(Qiniu_RS_PutPolicy* auth, Qiniu_Mac* mac)函数中添加,代码如下:
if (auth->insertOnly) {
cJSON_AddNumberToObject(root, "insertOnly", auth->insertOnly);
}
if(auth->deleteAfterDays >= 0) {
cJSON_AddNumberToObject(root, "deleteAfterDays", auth->deleteAfterDays);
}
这样添加后,发现上传的图片并没有删除。
我想咨询一个问题:
1. 如果我想使用上传策略中的这个超时删除功能,该如何去做,因为我发现6.2.5SDK中没有这个deleteAfterDays字段,但是你们的说明文档里描述了这个字段的功能

能否在http 表单上传中对 Qiniu_callex 加入进度回调

#if LIBCURL_VERSION_NUM >= 0x072000 curl_easy_setopt(curl, CURLOPT_XFERINFOFUNCTION, xferinfo); curl_easy_setopt(curl, CURLOPT_XFERINFODATA, &prog); #else curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, older_progress); curl_easy_setopt(curl, CURLOPT_PROGRESSDATA, &prog); #endif

OpenSSL 3.0 编译警告

warning C4996: 'ENGINE_load_builtin_engines': Since OpenSSL 3.0
warning C4996: 'ENGINE_register_all_complete': Since OpenSSL 3.0

这些编译警告有解决了吗?

关于七牛特殊字符文件名打开失败问题

如题,我这边有一个文件的名字是“5 七律•长征 名师教学设计.doc”。在枚举的时候采用的是unicode 枚举,文件名正常,但是在转换成ansi的时候出现了符号“•”乱码,导致在调用七牛接口进行上传的时候,文件打开失败,看了源码,使用的是createfileA函数,是窄字节,这里是否可以改用宽字节函数或者utf8,避免这种特殊文件无法上传的问题。

centos 下编译失败

make[4]: Entering directory `/home/mige/tools/c-sdk-6.2.5/CUnit/CUnit/Sources/Framework'
/bin/sh ../../../libtool --tag=CC --mode=compile gcc -DHAVE_CONFIG_H -I. -I../../.. -DRELEASE=@Release@ -Wall -W -pedantic -Wshadow -ansi -I/home/mige/tools/c-sdk-6.2.5/CUnit/CUnit/Headers -MT CUError.lo -MD -MP -MF .deps/CUError.Tpo -c -o CUError.lo CUError.c
mv -f .deps/CUError.Tpo .deps/CUError.Plo
mv: cannot stat ‘.deps/CUError.Tpo’: No such file or directory
make[4]: *** [CUError.lo] Error 1

错误 LNK2019 无法解析的外部符号

调用windows sdk出现以下错误怎么解决呢?谢谢
错误 LNK2019 无法解析的外部符号 "struct _Qiniu_Error __cdecl Qiniu_RSF_ListFiles(struct _Qiniu_Client *,struct _Qiniu_RSF_ListRet *,char const *,char const *,char const *,char const *,int)" (?Qiniu_RSF_ListFiles@@ya?AU_Qiniu_Error@@PAU_Qiniu_Client@@PAU_Qiniu_RSF_ListRet@@PBD222H@Z),该符号在函数 "public: void __thiscall Qiniu::getFilesList(void)" (?getFilesList@Qiniu@@QAEXXZ) 中被引用 qiniuQT E:\project\qt\qiniuQT\qiniu.obj 1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.