我有这个非常简单的 D 程序(pk.d):

import std.stdio;
import SDL;

int main(string[] args) {
    writefln("Hello world");
    if (SDL_Init( SDL_INIT_VIDEO ) < 0) {
        writefln("Unable to init SDL");
        return 1;
    }

    return 0;
}

我有一个非常简单的 make 脚本(我在这里使用的是 Windows,但 Windows D 编译器附带了一个 bash 解释器):
DMD=dmd
DFLAGS=-I./lib/SDL

$(DMD) pk $(DFLAGS)
pk

但是当我构建它时,我得到 Error 42: Symbol Undefined _SDL_Init

它成功地导入了 SDL,它发现 SDL_INIT_VIDEO 很好。我继续检查 SDL.d ,发现 SDL_Init 有一个定义: int SDL_Init(Uint32 flags); 。我想不通。这是我用 D 导入的第一个非 STL 库,所以希望我的错误很明显,有人能看到吗?

最佳答案

您还必须链接到 SDL 库。如果您有正确格式的文件,只需将其与源文件一起传递给编译器。或者,您可以将 pragma(lib, "SDL.lib") 之类的内容添加到您的程序中。

关于compiler-errors - D 和 SDL - 函数未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5114235/

10-12 14:56