09/01/23 21:18:07
C++のDLLをC#で使うためにC++/CLIのラッパーを書いています。
DLL関数の中に
InterfaceObject* Func();
のようなクラスのインターフェイスを返す関数が定義されてて
インターフェイスのポインタをプロパティに持つインターフェイスのラッパークラスを定義しました
virtual bool Get (DWORD &rNextLine) = 0; の抽象メソッドに対応するメソッドとして
bool Get(UInt32 %rNextLine); を定義し
DWORD value;
bool result;
result = プロパティ->Get(value);
rNextLine = (UInt32)value;
return result;
のように書いてビルドが通るようになったのですが。
もっとスマートにできないかなと悩んでいます。
return (プロパティ->Get(rNextLine))? true : false;
みたいに1行で書くためにで%ハンドル演算子をキャストするような方法はないでしょうか。
933:デフォルトの名無しさん
09/01/23 22:42:53
こういう風にできる。
pin_ptr<int> p = &rNextLine;
return プロパティ->Get(*p);
ただ、pinしないそっちのほうが性能では優れていそうな気がする。
934:932
09/01/24 00:00:01
>>933
pin_ptrについて調べてみます。
ありがとうございました。
935:デフォルトの名無しさん
09/02/01 15:21:56
.NETぢゃないライブラリならアプリと同梱して自動でインストールできるのに、
.NETってMSのサイトからDLして別途インストールさせないといけませんよね?
これ、自分で勝手にファイル配れるようになってればまだマシだったのに、
いろいろなバージョンをDL、インストールしないといけない現状はいかがなものかと思います。
.NETって騒ぎ始めたあともMS謹製のOfficeは.NETじゃなかったと思うんですが、
やはりうざすぎて嫌われるのを予知していたのでしょうか
936:デフォルトの名無しさん
09/02/01 15:25:43
配れます
937:デフォルトの名無しさん
09/02/01 16:19:52
勝手に.net最新版をインストールしても、他のアプリケーションに悪影響を及ぼすことは
ありませんか?
あるいは他のひとに違うバージョンとかパッチをインストールされても動作が変わったり
する恐れはありませんか?
938:デフォルトの名無しさん
09/02/01 16:23:53
ない
勝手に適当に選んでくれる
939:デフォルトの名無しさん
09/02/01 16:45:00
そうでもない。
2.0以降は大丈夫だが。
1.0-1.1以降
1.1-2.0以降
は動作は保障されない。
940:デフォルトの名無しさん
09/02/01 16:47:20
>>939
どうせ書くなら「まともな」日本語で頼む。
941:デフォルトの名無しさん
09/02/01 16:49:19
理解できないの?ハハッワロス
942:デフォルトの名無しさん
09/02/01 16:56:13
>>939
最新版をインストールしても古いのが使われるよ
943:デフォルトの名無しさん
09/02/01 22:14:36
逆に新しいので使わせたかったら、
古いのをアンインストするか、
構成ファイルでバージョン指定
<configuration><startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v1.1.4322"/>