我的IDE中有一个项目.我需要创建一个共享库来扩展.我不想使用共享库设置制作此项目的副本.有没有办法使用我现有项目中的目标文件(.o)构建共享库?据我了解,我可以为此编写一个makefile.
我做了一个Eclipse Juno 32位的新安装,以及新安装的MinGW 32位,我的平台是Windows 7 64位.在尝试调试一个简单的程序时,我可以看到非常简单的表达式,但更复杂的一切都会让我错误.有关以下程序中的示例:
int main()
{
vector<int> vRings;
for(int i=0;i<50;i++) {
vRings.push_back(i%5);
}
//std::cout << "result:" << getRingNumber(vRings,vDiscs);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在观察窗口中,观看vRings正常工作,但尝试观看矢量内容不起作用:
试图观看vRings [0]:
错误:报告了多个错误.\无法执行MI命令:-var-create - *vRings [0]来自调试器后端的错误消息:找不到operator [].\无法创建变量对象
试着看vRings.at(0):
vRings.at(0)错误:报告了多个错误.\无法执行MI命令:-var-create - *vRings.at(0)来自调试器后端的错误消息:无法评估函数 - 可能内联\无法创建变量对象
我该怎么做才能解决问题?
我有DER和PEM格式的证书,我的目标是检索Issuer和Subject的字段,并使用CA公钥验证证书,同时使用根公钥验证CA证书.我能够检索发行人和主题的所有细节,但无法验证证书.
使用的API:
x509 = d2i_X509_fp (fp, &x509); //READING DER Format
x509 = PEM_read_X509 (fp, &x509, NULL, NULL); //READING PEM Format
//to retrieve the Subject:
X509_NAME_oneline(X509_get_subject_name(x509), subject, sizeof (subject));
//to retrieve the Issuer:
X509_NAME_oneline(X509_get_issuer_name(x509), issuer, sizeof (issuer));
//To store the CA public key (in unsigned char *key) that will be used to verify the
//certificate (in my case always sha1WithRSAEncryption):
RSA *x = X509_get_pubkey(x509)->pkey.rsa;
bn = x->n;
//extracts the bytes from public key & convert into unsigned char buffer
buf_len = …Run Code Online (Sandbox Code Playgroud) 对于预取,返回地址为:R14_abt =中止指令的地址+4
对于数据中止,返回地址为:R14_abt =中止指令的地址+8
如何在C中将double值转换为char数组?
double a=2.132;
char arr[8];
Run Code Online (Sandbox Code Playgroud)
有没有办法在标准C中这样做?谁能提供任何解决方案?
我正在编写ARM CPU的启动代码.没有内部RAM,但是有1GB的DDRAM连接到CPU,在初始化之前无法直接访问.代码存储在闪存中,初始化RAM,然后将自身和数据段复制到RAM并继续执行.我的计划是:
#define REG_BASE_BOOTUP 0xD0000000
#define INTER_REGS_BASE REG_BASE_BOOTUP
#define SDRAM_FTDLL_REG_DEFAULT_LEFT 0x887000
#define DRAM_BASE 0x0
#define SDRAM_FTDLL_CONFIG_LEFT_REG (DRAM_BASE+ 0x1484)
... //a lot of registers
void sdram_init() __attribute__((section(".text_sdram_init")));
void ram_init()
{
static volatile unsigned int* const sdram_ftdll_config_left_reg = (unsigned int*)(INTER_REGS_BASE + SDRAM_FTDLL_CONFIG_LEFT_REG);
... //a lot of registers assignments
*sdram_ftdll_config_left_reg = SDRAM_FTDLL_REG_DEFAULT_LEFT;
}
Run Code Online (Sandbox Code Playgroud)
目前我的程序工作不正常,因为寄存器值最终被链接到RAM,并且在程序尝试访问它们时,只有闪存可用.
我怎么能改变我的链接器脚本或我的程序,以便这些值在闪存中的地址?有没有办法在文本段中包含这些值?
实际上,当它们在文件范围内声明时,那些定义的值是全局数据还是静态数据?
编辑:
目标文件与以下链接描述文件链接:
MEMORY
{
RAM (rw) : ORIGIN = 0x00001000, LENGTH = 12M-4K
ROM (rx) : ORIGIN = 0x007f1000, LENGTH = 60K
VECTOR (rx) : ORIGIN = …Run Code Online (Sandbox Code Playgroud) 我想使用C程序来获取手动或通过dhcp设置网络接口的IP.
我试过使用下面的代码,它已经在Debian中工作,但它在OpenWrt中没有用.我想知道如何在OpenWrt中编写一个C程序.我试过用这个:
#include <stdio.h>
int main(void)
{
FILE *fp;
char buffer[80];
fp=popen("cat /etc/network/interfaces |grep ^iface\\ br-lan | awk -F ' ' '{print $4}'","r");
fgets(buffer, sizeof(buffer), fp);
printf("%s", buffer);
pclose(fp);
}
Run Code Online (Sandbox Code Playgroud)
这段代码在Debian中运行,但它在OpenWrt中不能正常工作,所以我想知道如何编写程序来获得相同的结果.
是否可以scanf定义数据类型?
#include <stdio.h>
enum numberByMonth {jan=1,feb,mar,apr,may,jun,jul,aug,sep,okt,nov,dec};
main(){
printf("\n");
printf("Get Number By Month (type first 3 letters): ");
enum numberByMonth stringy;
scanf("%u",stringy);
printf("Your month number is: %u",stringy);
}
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我扫描哪种数据类型?我把它设置为%u因为gcc告诉我它是无符号整数.
我这样做:
FILE* f_cert = fopen("cert", "rb");
X509* x_cert = NULL;
PEM_read_X509(f_cert, &x_cert, NULL, NULL);
...
Run Code Online (Sandbox Code Playgroud)
现在我想自己读取"cert"文件,并使用PEM_read_bio_X509而不是PEM_read_X509.所以,如果我已经有这些变量:
const char cert_data[] = {....};
const int sert_data_size = 123;
Run Code Online (Sandbox Code Playgroud)
我如何初始化BIO,将其传递给PEM_read_bio_X509并释放临时生物?
我有一个使用STM32F103(ARM Cortex M3)的嵌入式项目,它在发布模式下偶尔会遇到硬故障.作为恢复的一部分,我想从硬故障之前检索PC值并将其存储起来以便稍后在电池备份区域中进行调试.
如何在硬故障点确定程序计数器的值?显然,PC现在设置在硬故障中断的位置.
我应该在哪里看?它有一个普通模式寄存器组的地址吗?
谢谢!