首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >dmd和gdc编译代码的不同?

dmd和gdc编译代码的不同?
EN

Stack Overflow用户
提问于 2014-07-28 14:16:40
回答 1查看 194关注 0票数 4

我目前正在试用DerelictSDL2 (一个绑定到SDL2库的D),我编写了一段代码,成功地加载了JPG映像并将其显示在窗口中。也就是说,当它是用dmd编译时。当我尝试使用gdc (没有代码修改)时,它确实编译了,但是它不会在运行时加载映像。

我相信我做得对:

SDL_Init(SDL_INIT_VIDEO)

然后

IMG_Init(IMG_INIT_JPG)

在那之后的某个地方

this.data = IMG_LoadTexture(Window.renderer, name.ptr)

Window.renderer的位置(很明显),SDL_Renderer*name.ptr是指向要加载的图像的名称的char*。但是在用gdc编译时,IMG_LoadIMG_LoadTexture都返回null,而使用dmd则返回指向新创建的纹理的指针.

我是不是忘记了其他的东西(毕竟,对于dmd,即使没有IMG_Init,它也起作用了)?遗弃仅适用于dmd (即使它只是与C函数的接口)吗?

dmd : 2.065

gdc : 4.9.1

编辑:

结果发现问题完全不同。IMG_LoadTexture的第二个参数是指向数据的指针,但是name.ptr似乎只适用于dmd。然而,如果我尝试使用这样的硬编码论点:

IMG_LoadTexture(renderer, "../test/res/image.jpg")

它与dmd和gdc一起工作。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-28 15:29:28

不能保证D字符串将以0结尾.它只是偶然发生与dmd。正确的方法是从toStringz模块中使用std.string ()函数。

附注:请注意字符串文本是以0结尾的,这就是硬编码参数工作的原因。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24997268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档