求助 Access Violation
tomqyp
2007-09-15
下面这段代码怎么改都会出错,为什么会这样啊
import derelict.freetype.ft, derelict.sdl.sdl, derelict.sdl.ttf; int main() { TTF_OpenFont(cast(char*)"sdgdfg.ttf".ptr, 123); return 0; } |
|
player7
2007-09-15
试试 toStringz("sdgdfg.ttf")
|
|
tomqyp
2007-09-15
谢谢,我试了下toStringz也不行,我看TTF_OpenFont的C声明是const char*,按道理不会出这样的问题啊
|
|
qiezi
2007-09-15
这么简单都不行?应该是库的问题吧,头文件是否转换正确?
|
|
player7
2007-09-15
错误信息是什么啊?
|
|
DavidL
2007-09-15
楼主的代码写成了:
TTF_OpenFont(cast(char*)"sdgdfg.ttf".ptr, 123); 必须改成 TTF_OpenFont(toStringz("sdgdfg.ttf"),123); "dfgdfg.ttf"是静态常量,后面有没有帮你补零就没有文档说明了,所以应该由运行时来确定,或者你 "sdfdfg.ttf"~cast(char)0x0什么的,大致是一定要确保后面有补C所需要的0 |
|
tomqyp
2007-09-15
谢谢,问题解决了,原来是个低级错误.
derelict封装的库都是动态从Dll加载的,load一下就行了,自己忘了. 说到底没有调试工具还是不方便哪,有个调试很容易就会发现TTF_OpenFont值是null. |
|
DavidL
2007-09-15
楼上可以尝试descent
|