D言語 Part34©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
あれ途中で切れた。
dmd -m64 -shared mydll.d dll.d mydll.def >>384 それぞれ書かれた時期が違うんじゃまいか DMD で単純な x64 バイナリを作るところまでは行けてるんでしょ?
Win32 DLL も作れるんでしょ?
x64 で Win32 App と結合できるかって話でしょ?
出来ないと思うけど ブリッジ役のDLLも用意して64<-->32間をプロセス間通信でうんたらかんたら >>336
> DのIUnknownの宣言のReleaseの後にダミーのメソッドを、
> ・2個追加することでC++で実装されたinterfaceをDから呼び出すことが、
> ・1個追加することでDで実装されたinterfaceをC++から呼び出すことが、
> それぞれできたのですが、とてもまともな解決策とは思えません。
https://issues.dlang.org/show_bug.cgi?id=15589#comment_text_0
やっぱりダミーを追加するしかないらしい わぁ!どうもありがとう!まだ書きかけ&お粗末ですが、その時の成果物です。
https://github.com/garlic-flavor/D7z
ツッコミ/プルリクお待ちしております。m(_ _)m いつのまにか公式が改装してた
なんかすごくプログラミング言語の公式ページっぽい /r/programming 見てるとほぼ毎日Dの記事があって、ついに時代がきたか感がある scope(exit)はスコープ抜けるときに実行されるけどさ、
呼び出し元のスコープ抜けるときに実行されるような処理を書く方法って存在しないのかな
例えば
foo(){
hoge();
}
で、hoge()の定義内に書いてfoo()の最後に実行されるようなやつ 部品化の概念を否定するその硬派な姿勢、俺は評価するよ >>394-396
scoped型をhogeが返せばいいんじゃね、って思ったけど
もうscoped型って無くなったんだっけ? std.datetime.measureTime がそんなんだったような。 core.sys.windowsのナカミがおきかわっとるー\(・∀・)/ もしかしてdmcって64bitのコンパイルオプションないの? ないっしょ
16bit ならまだあるかもしれない
それに optlink まで含めると 32 ですら騙し騙し使ってる状況 今さらだけどD用のお勧めのGUIライブラリある?
マルチプラットフォームで。 自分でメンテする気があれば正直どれでもいいし
そうじゃなければ D でGUIなんて考えないほうがいい LDCからEmscripten通してHTML5にでも変換したほうがいいんじゃない?(適当) 時代は io.js + Electron ですねわかります ぜんぜんわからない
D普及のために、できるだけわかりやすく情報を提供してください。切に望みます Cのインタフェースがていきょうされていれば、利用できる
これが鍵なんだろうけど、初心者むけではない わからんわからんわからんわからんわからんわからんわからんわからん 自分は何がしたいのか、何ができなかったのか
情報がなければ答えようもなかろう >>408
DlangUI、結構良さそう
使ったことある人いたら感想聞きたい >>408
dクス
やっぱDWTが定番かー
DlangUI、最初のmixinが美しくないなぁ・・・・・・(笑)
>>409
あれ、Dの利点あんまりないですやん>< DでwrapしたPythonObjectでwxPython使ったら意外と便利だったな DFLがマルチプラットフォームになれば文句ないんだがなぁ どうしてもマルチプラットフォームが必要なら
HTML5 でどうにかする方が現実的 もう仕様固まってきて大きな動きないのにサードパーティのライブラリが整備されないのは
Dが今まで積んできた業かな Oh my D-lang, Oh my D-lang,
Oh my D-lang Clementine. ライブラリが整備されないのはなぜ? ユーザーが少ないから
ユーザーが少ないのはなぜ? ライブラリが整備されないから コンパイル時にテキスト読み込んでさ、
行数の数だけ文字列mixinして関数作りたいんだけど
任意回数の文字列ミックスインのループってどう書くんだろう・・・・・・。 >>431
先に文字列加工して最後にまとめてミックスイン出来ないのん? 本家に追いつくのは無理だから mingw で動くように戻しておくれ >>436
過去に仕様変更し過ぎたせいでD言語=仕様変更っていう認識が一般に広まったせいじゃね? >>431
mixin template loop(string s,r...){mixin(s); mixin loop!(r);}
mixin template loop(string s){mixin(s);} 信用は一度失うと取り戻すのは困難ってことさね
D言語について少しでも調べてもらえば今そうでないのはわかることだから、
D言語を知らない人がD言語に触れる機会を増やす・・・
つまりD言語で書かれた一般向けアプリがもっと出ればいいわけだ
よし!あとはまかせたぞ! もう Julia でいいような気がしてきた
手遅れかもな 簡単過ぎて調べなくても判ってしまう言語だと人気が無いことになるな D言語って名前のイメージが悪くなっちゃってるからD++とかに変えよう >>440
exeはnativeなDの足元にも及ばない iota(-10,1)やrecurrence!(q{ -n })(0)がintになるのに
sequence!(q{ -n })だけuintで負の値を使えないんですがこれって何か理由があるんですかね? >>451 ソース見た感じ、
recurrence!(q{-n})(0) は 0 の型とってる→int
sequence!(q{-n}) は -n の型とってる、ここで n の型は size_t → size_t
ってことみたい。 alias compute = binaryFun!(fun, "a", "n");
alias ElementType = typeof(compute(State.init, cast(size_t) 1));
で、nにcast(size_t)1を入れてsize_tになってるんですね
単に気になっただけなんですけど 配列の中の最大値を探すときって普通どうやるんでしょうか
enum arr = [3, 1, 4, 1, 5, 9, 2];
aliasSeqOf!arr.max.writeln; // 要std.metaなのと定数でないとダメ
arr.minPos! なんか途中で切れた
minPosとか使ってるんですが、しっくりこなくて >>454
std.algorithm使って関数型っぽく
arr.reduce!max.writeln; void hoge(T)(out T t) {...}
uint x;
hoge(x); // コンパイル通る
int[] arr;
hoge(arr.length); // コンパイルエラー(Error: template hoge cannot deduce function from argument types !()(uint), candidates are:)
arr.lengthでエラーが出るのはどういう理屈なんですか? いや、ひょっとして length のセッターを呼んで欲しい…?
流石に無理なんじゃ arr.length = 0とかできるから普通の変数と同じように考えてました。
hogeに渡す時に、ただの右辺値のuintとして評価されるってことですね。 できてもいいとは思うけどな
内部的には一時変数が作られるとかで もしlengthをいじりたいなら深く考えず
void nobasu(T)(ref T[] arr) {
arr.length ++;
}
とかでいいんじゃ? lengthをいじりたいというより、out引数を持つ関数を使いたかったんですよね。
なのでこうしました。
uint lenght;
hoge(length);
arr.length = length; >>456
reduce!maxか!
遅くなりましたが、ありがとうございました。 遅い、遅すぎる
時代は既に reduce から fold に変わろうとしているのに とはいえまだマージされただけでリリースはされてないし
内部でreduce使ってるから無くなることはないだろうけどな struct S { int[] arr; }
S s1;
...
S s2 = s1;
構造体のデフォのコピーコンストラクトを使った場合、メンバarrはシャローコピーされますよね?
ディープコピーしたい場合、コピーコンストラクタを書き換えるか、ディープコピー用のメンバ関数を書く方法が思いつきますけど、
もっと手軽な方法はないでしょうか? 前者はpostblitを指してるんだと思うけど、すでに十分手軽じゃね?
this(this){arr=arr.dup;}
ところでマニュアルによればpostblitは初期化時の話らしいけど、代入時にも呼ばれるのは何故だ >>471
構造体なのでコピーコンストラクタじゃなくてpostblitでしたね。
this(this){arr=arr.dup;}を構造体ごとに書いていかないといけないのが面倒くさく感じました。 >>472
つまり1回書くだけで全ての構造体に一括して適用されるような方法を期待してる?
さすがに無い気がするし、むしろあったら怖い
せいぜいmixinして文字数削る程度じゃね >>473
自分で書くならtupleofとtraitでdupテンプレートを書いて
S s2 = s1.dup;
っていうのを思いつきました。 >>433
今更だけどありがとう、
そんなアタリマエのことを全然思いつかなかったw
CTFEすげー(今更) VS2013とLDCでビルドしたら、
LINK : fatal error LNK1104: cannot open file 'legacy_stdio_definitions.lib'
というエラーが出たんですけど、原因は何が考えられますか? >>478
読み込むライブラリの場所の指定がおかしい >>479
うーん、わからないです。
legacy_stdio_definitions.libがHDDの中にないし、ぐぐってもなんなのかよくわからない。 >>478
デフォルトは VS2015 の設定だから
etc/ldc2.conf の該当行 を書き換えてくれってどっかに書いてあった
"-Llegacy_stdio_definitions.lib" とその前の行のカンマを消せばいい >>481
ldc.confにlegacy_stdio_definitions.libはありませんでした。
色々、調べてて気づいたんですけど、LDCを使うにはLLVMもインストールしないといけないですか?
LLVMのバイナリは公開されていないみたいだし、ビルドしないといけないとなると面倒ですね。
日本語の解説サイトもなさそうだし難易度が高い。 忘れてた VS2015 以外のバージョンで動かすには
LDC をその設定で再構築してくれと書いてあった
今探してもどこだったか見当たらないけど…
たぶん VS2015 入れるのが一番簡単 >>483
なるほど・・・VS2015なら簡単でしたか。 ■ このスレッドは過去ログ倉庫に格納されています