如果这两个是导出的变量,在qiniu.def中不是应该写成下面那样吗?
EXPORTS
QINIU_ACCESS_KEY DATA
QINIU_SECRET_KEY DATA
但是我看了一下C-SDK的源码,里面是没有“DATA”关键字的。
这不是重点,我想问的是,在C++中引用七牛SDK,应该怎么给QINIU_ACCESS_KEY和QINIU_SECRET_KEY这两个变量赋值?
我试过以下方法,无效:
1. 在没有添加任何extern
或_declspec( dllimport )
等语句的情况下,我直接用下面方法赋值:(这也是七牛文档例子代码中的用法)
extern "C"
{
#include "qiniu/conf.h"
#include "qiniu/rs.h"
#include "qiniu/io.h"
}
void MyClass:setQiniuKey()
{
QINIU_ACCESS_KEY = KQiniuAK; //全局变量
QINIU_SECRET_KEY = KQiniuSK; //全局变量
}
编译、链接都没问题,但是运行到赋值这里的时候,异常提示:0x00401447 处未处理的异常: 0xC0000005: 写入位置 0x0040fe72 时发生访问冲突
2. 后来我在该cpp文件前面加了下面两句:
extern "C"
{
extern const char* QINIU_ACCESS_KEY;
extern const char* QINIU_SECRET_KEY;
}
运行,结果同上,还是访问冲突。
3. 参考了这篇文章之后,改为:
extern "C"
{
extern const char* _declspec(dllimport) QINIU_ACCESS_KEY;
extern const char* _declspec(dllimport) QINIU_SECRET_KEY;
}
这下编译都通不过了,提示:error C2059: 语法错误 : “__declspec(dllimport)”
那么请问,引用七牛C-SDK,正确给这两个变量赋值的完整步骤是什么?谢谢。
https://github.com/qiniu/c-sdk/tree/develop/docs
参考这篇使用文档:
C-SDK 的
conf.h
文件中声明了对应的两个变量:QINIU_ACCESS_KEY
和QINIU_SECRET_KEY
。你需要在启动程序之初初始化这两个变量为七牛颁发的AccessKey
和SecretKey
。