查看完整版本: 【已解决】一个C++程序编译连接问题 望指教 谢谢

nick3 2008-1-21 16:08

【已解决】一个C++程序编译连接问题 望指教 谢谢

遇到一个不解的问题
就是 同样的代码 存为main.c中就可以顺利的编译连接通过 且正常运行
     但是将文件名改为main.cpp后就出现问题了
在makefile的LIBS中加-lstdc++也没用
错误如下:
[quote]e:\pspsdk\pspdev\bin\..\lib\gcc\psp\4.1.2\..\..\..\..\psp\bin\ld.exe: warning: cannot find entry symbol module_start; defaulting to 0000000000000000[/quote]
然后后面会跟上一堆说是未定义的函数 其实这些函数都定义过的
这样使得我想用C++来写程序都不行啊:'(
有谁知道解决方案的吗?

[[i] 本帖最后由 nick3 于 2008-1-21 21:59 编辑 [/i]]

诗诺比 2008-1-21 20:07

extern "C"
{
......
}

nick3 2008-1-21 21:58

嗯 的确是这个问题 呵呵
谢谢LS了
我竟然忘记了C和C++的语言链接性不一样:L

[[i] 本帖最后由 nick3 于 2008-1-21 22:00 编辑 [/i]]

诗诺比 2008-1-22 10:42

我一开始也碰到过....突然一下才反应过来的....LZ不用客气
=========
//我这有个问题
u8 a[] = "......"
void func1()
{
        u8* p8;
        u16 bt16;
        u32 bt32;
        p8 = a+1;
        bt16 = *(u16*)p8;
        bt32 = *(u32*)p8;
}
==========
这段程序在PC上什么问题也没有,到了PSP上就死机,
用的是*.c文件,gcc编译的,.cpp用g++还没试过....
问题就出在
        bt16 = *(u16*)p8;
        bt32 = *(u32*)p8;

这两句上,可为什么会死机,编译时未报错....

nick3 2008-1-22 15:35

你这段代码我也看不出问题来啊
我在程序中做过你这样类似的强制类型转换 但是还没死过机
我是将一个void型指针强转成u32型指针 再用*取值后赋给u32型变量

prolead 2008-11-5 23:47

试试bt16 = *(u16*)p8 & 0xff;
页: [1]
查看完整版本: 【已解决】一个C++程序编译连接问题 望指教 谢谢