Dlangui가 빌드 할 수없는 것을 빌드했습니다.
10122 단어 dlang
Linux Mint 17.2에서의 것입니다. Windows와 OSX에서도 비슷한 일이 발생하는지 어떻게 해결해야할지 모르겠습니다.
Dlangui란?
본가 페이지
D 언어로 작성된 GUI 라이브러리입니다. POSIX/Windows 대응으로 OSX, Windows, Linux에서 움직입니다. FreeBSD도 움직일 것 같습니다.
라이센스는 Boost1.0입니다.
저자는 buggins라고 하는 분으로 DlangIDE라고 하는 것도 만들고 있는 것 같습니다. 이번에 사용해 보려고 생각합니다.
소개
본가 페이지
본가의 페이지대로, SDL2의 인스톨이나 Linux라면 XCB의 인스톨을 합니다.
dub, dmd를 설치하지 않은 경우 설치를 수행합니다.
빌드를 통한 방법
본가 페이지
본가의 페이지대로, SDL2의 인스톨이나 Linux라면 XCB의 인스톨을 합니다.
dub, dmd를 설치하지 않은 경우 설치를 수행합니다.
빌드를 통한 방법
본가 페이지 샘플 코드가 오래되었습니다
이것들을 하나씩 부서 갑니다.
gl3n
내 경우에는 먼저 gl3n의 정적 링크 라이브러리가 생성되지 않았습니다. 또한 경고도 나옵니다.
이것의 원인은 잘 모르겠지만 버전을 1.2.0으로 끌어 올리면 어떻게 된다. DUB 프로젝트 내의 dub.selection.json의
"gl3n":"1.0.1",
(1.0.1 부분은 환경에 따라 다를 수 있음)을 "gl3n":"1.2.0"
로 다시 씁니다.억지로 버전을 올리고 있기 때문에 조금 불안합니다만, 이것 밖에 없는 생각이 들기 때문에 이것으로 갑니다.
dlib
dlib/coding/zlib.d에서 컴파일 오류가 발생합니다. 내용은, 표준 라이브러리의 etc.c.zlib의 z_stream.total_out를 uint형에 암묵의 형태 변환을 할 수 없다고 하는 것입니다. 원인은, z_stream.total_out형이 core.stdc.config.d의 c_long형으로서 선언되고 있어 이 c_long형이 64bit이면 ulong, 32bit이면 uint가 되는 것입니다.
32bit라면 uint -> uint이므로 아무 문제도 없습니다만, 64bit라면 ulong -> uint가 되어 컴파일 에러가 발생합니다.
cast하자 std.conv:to를 사용하면 된다고 생각합니다. 자신은 어느 쪽이 좋은지 잘 모릅니다.
dlib/coding/zlib.d의 75행과 85행
zlib.d
return zlibStream.total_out;
을 아래 코드 중 하나로 다시 작성합니다.
zlib.d
return cast(uint)zlibStream.total_out;
return zlibStream.total_out.to!int;
to를 사용하는 경우
zlib.d
import std.conv : to;
필요합니다.
dlangui 컴파일 오류
gl3n과 같은 방식으로 버전을 0.6.32로 지정하면 다시 고쳤습니다.
샘플 코드 재작성
main.d
// main.d
import dlangui.all;
mixin DLANGUI_ENTRY_POINT;
/// entry point for dlangui based application
extern (C) int UIAppMain(string[] args) {
// resource directory search paths
string[] resourceDirs = [
appendPath(exePath, "../res/"), // for Visual D and DUB builds
appendPath(exePath, "../../res/") // for Mono-D builds
];
// setup resource directories - will use only existing directories
Platform.instance.resourceDirs = resourceDirs;
// select translation file - for english language
Platform.instance.uiLanguage = "en";
// load theme from file "theme_default.xml"
Platform.instance.uiTheme = "theme_default";
// create window
Window window = Platform.instance.createWindow("My Window", null);
// create some widget to show in window
window.mainWidget = (new Button()).text("Hello world"d).textColor(0xFF0000); // red text
// show window
window.show();
// run message loop
return Platform.instance.enterMessageLoop();
}
세 번째 줄을 아래 코드의 위 줄에서 아래 줄 줄로 다시 씁니다.
main.d
mixin DLANGUI_ENTRY_POINT;
mixin APP_ENTRY_POINT;
그리고 dlangui.all 등은 존재하지 않으므로,
main.d
import dlangui.all;
import dlangui;
위 행의 코드를 아래 행의 코드로 다시 씁니다.
게다가 저는 dub와 텍스트 에디터로 쓰고 있기 때문에, resorce 云々를 깎습니다. 결국 이러한 코드가되었습니다.
main.d
import dlangui.all;
mixin APP_ENTRY_POINT;
extern (C) int UIAppMain(string[] args)
{
Platform.instance.uiLanguage = "ja";
Platform.instance.uiTheme = "theme_default";
auto window = Platform.instance.createWindow("Hello World",null);
window.mainWidget = (new Button()).text("Hello World"d).textColor(0xFF0000);
window.show();
return Platform.instance.enterMessageLoop();
}
이제
dub run
를 실행하면 이러한 창이 나타납니다. 끝에
Boost 라이센스로 D언어로 쓰여져 있어 Windows, OSX, Linux로 움직이면 편리할 것 같은 생각이 듭니다.
실수나 오자, 오식 등이 있으면 가르쳐 주시면 감사하겠습니다.
Reference
이 문제에 관하여(Dlangui가 빌드 할 수없는 것을 빌드했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/namachan10777/items/790964dff4e20bc7aed6
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Dlangui가 빌드 할 수없는 것을 빌드했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/namachan10777/items/790964dff4e20bc7aed6텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)