そこで、まずSquirrel側のprint関数の結果をDXライブラリのprintfDx関数を使って表示させてみようと思い、下のようなコードを書きました。
import std.stdio;
import std.stdarg;
import std.string;
import std.conv;
import squirrel;
import sqstdio;
import sqstdaux;
import dxlib;
extern(C) void PrintFunc(HSQUIRRELVM sq, const(SQChar)* fmt, ...) {
va_list args;
va_start(args, fmt);
//vfprintf(core.stdc.stdio.stdout, fmt, args);
char[512] buf;
vsprintf(buf.ptr, fmt, args);
auto str = to!wstring(buf);
printfDx(str.ptr);
va_end(args);
}
void main(){
ChangeWindowMode(TRUE);
if(DxLib_Init() == -1) return;
HSQUIRRELVM sqvm = sq_open(1024);
sqstd_seterrorhandlers(sqvm);
sq_setprintfunc(sqvm, &PrintFunc, &PrintFunc);
sq_pushroottable(sqvm);
if(SQ_FAILED(
sqstd_dofile(
sqvm,
".\\script\\test.nut",
SQFalse,
SQTrue)
)
)
{
printfDx("スクリプト見つからへんで");
}
sq_close(sqvm);
WaitKey();
DxLib_End();
}
std.utf.UTFException@std\utf.d(645): Invalid UTF-8 sequence (at index 1)
という例外が発生してしまいます。
どのように解決すればよいのでしょうか?
ご教示のほど、よろしくお願いします。
コンパイラはDMD2.0、
ライブラリはdxlib4dと、SquirrelをDにインポートしたものを利用しています。