我在源目录中有很多.c文件的这个项目,然后我创建项目,项目里面有.o文件,我也想将这些文件推送到存储库,所以不要添加每个.o文件,这是可能的但是......,如何轻松添加.o文件?
当我创建指向某个结构的指针时,我是否必须将其设置为NULL,然后分配它然后使用它?为什么?
我写的是这样的:
gcc -m elf_i386
Run Code Online (Sandbox Code Playgroud)
它说:
gcc: error: elf_i386: No such file or directory
Run Code Online (Sandbox Code Playgroud)
基本上我试图在64位系统上编译一个32位程序,但错误:
/usr/lib64/gcc/x86_64-suse-linux/4.6/../../../../x86_64-suse-linux/bin/ld:
skipping incompatible /usr/lib/libSDL.so when searching for -lSDL
Run Code Online (Sandbox Code Playgroud)
我已经检查了用-m32构建的项目,我可以看到所有*.o文件都是ELF 32位LSB,而/usr/lib/libSDL.so也是ELF 32位LSB ...所以我可能需要将-m elf_i386传递给ld对吗?但是我不直接使用ld我只是使用gcc来编译它.
我已经使用本教程构建了静态 python:(python 版本 3.4.2)
一切正常,几乎。当我的简单测试应用程序与库链接时:
libpython3.4m.a
这是简单演示的源代码:
using namespace boost::python;
using namespace std;
class World {
private:
string name;
public:
void set(string name) {
this->name = name;
}
void greet() {
printf("name is %s\n", this->name.c_str());
}
};
typedef boost::shared_ptr< World > world_ptr;
BOOST_PYTHON_MODULE(hello) {
class_<World>("World")
.def("greet", &World::greet)
.def("set", &World::set)
;
};
int main ( int argc, char** argv ) {
Py_NoSiteFlag = 1;
Py_FrozenFlag = 1;
//Py_IgnoreEnvironmentFlag = 1;
Py_SetPythonHome(L".");
Py_SetProgramName(L"");
PyImport_AppendInittab("hello",PyInit_hello);
Py_Initialize();
try {
PyRun_SimpleStringFlags("import hello", …Run Code Online (Sandbox Code Playgroud) 我有这个包含很多内联函数的头文件,编译后说:函数***的多个定义,函数看起来像这样:
inline int testab(int a, int b)
{
return a>b;
}
Run Code Online (Sandbox Code Playgroud)
在内联前添加静态后,错误消失了.这是正确的方法吗?或者我错过了什么?我以为我可以在这样的标题中设置内联函数.
我的源文件不在我需要做的一个目录中 ../ 或 ../../ 东西。
之后,我需要更改源文件名,例如: ../ex/test.c to obj/test.o
用这个: 命令:
$(OBJDIR) $(notdir $(SOURCECODE:.c=.o))
Run Code Online (Sandbox Code Playgroud)
然而,只有$(SOURCECODE)( ../ex/test.c) 中的第一个文件名被正确重命名为 obj/test.o,其余的看起来都像*.o,没有目录信息。
如何使用memcpy两个指针复制使用a,b两者都是unsigned char *:
a 指向充满数据的内存(unsigned char)b 甚至没有分配如何复制a到b使用memcpy?第三个参数memcpy需要a以字节为单位指向的内存大小; 怎么弄明白?
我只想写下:
char* test="test";
printf("%s",test[0]);
Run Code Online (Sandbox Code Playgroud)
它说seg故障; 然后我改变
printf("%s",&test[0]);了错误但是这不是我想要的; 控制台打印:"测试"如何从该指针获得值"t"?
我的代码给了我段错误:我不明白,调试器说错误来自于从stored_打印值
char *stored_ = NULL;
char testMessage[15];
//strcpy(stored_, testMessage);
for (int a = 0;a < 10; a++)
{
sprintf(testMessage,"Message::%i\n",a);
printf("string is:%s;length is %i\n",testMessage,strlen(testMessage));
stored_ = (char*) realloc (stored_, sizeof(char) * (strlen(testMessage) * (a+1) ));
strcpy(&stored_[a], testMessage);
}
for (int b = 0;b < 10; b++)
{
printf("inside:|%s|\n",stored_[b]);
}
Run Code Online (Sandbox Code Playgroud) 我有几个关于混合代码的问题:
一个基于c的完整项目,如果我想使用c ++库,那么我用纯c代码创建一个包装器,然后构建该共享库,我是否必须更改为g ++而不是gcc编译器?
如果包装器与库一起编译为静态库怎么办?