トップページ > プログラム > 2014年11月11日 > qSp4OacN

書き込み順位&時間帯一覧

1 位/192 ID中時間01234567891011121314151617181920212223Total
書き込み数00000000000000020000016211



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
ふらっと C#,C♯,C#(初心者用) Part113

書き込みレス一覧

ふらっと C#,C♯,C#(初心者用) Part113
239 :デフォルトの名無しさん[]:2014/11/11(火) 15:21:57.91 ID:qSp4OacN
>>238
HogeAは勝手につけた名前です
ややこしくしてすみません
ふらっと C#,C♯,C#(初心者用) Part113
242 :デフォルトの名無しさん[]:2014/11/11(火) 15:42:43.82 ID:qSp4OacN
ちなみに32bitでコンパイルした場合アライメントは双方で一致するのかしら?
HOGEGE_INFOの場合short 3つだと2byte調整が入り
HOGEGE_EXT_INFOの場合byte,byteと来て2byte分調整が入りと・・・
ふらっと C#,C♯,C#(初心者用) Part113
247 :デフォルトの名無しさん[]:2014/11/11(火) 21:44:41.50 ID:qSp4OacN
なれてなくて>>235で情報が足りませんでした
HogegeSizeはHogegeInfoListの個数(構造体の配列)でこちらはわかるのですが
HogegeInfoListのほうは構造体の配列はDLLで作って送り返すのでその先頭を
収めるポインタ?を渡すだけでいいのですがどのように書けばいいのでしょうか?

C/C++だとイメージ沸くんですがC#から呼び出しがさっぱりわかりません
いろいろ試してみたんですがdllの先で落ちてたりしてる感じですorz
ふらっと C#,C♯,C#(初心者用) Part113
249 :デフォルトの名無しさん[]:2014/11/11(火) 22:08:08.02 ID:qSp4OacN
>>248
その後dllの中の情報がわかったのですが
C#->C++DLLへは配列の中身は渡さないですよ
あくまでC++DLL->C#で返ってくる構造体の配列を受けるための
ポインタを渡せばいいだけなんですけどこの辺の記述がさっぱり・・・
構造体の実態を作ってそれを渡すパターンはネットで割りとみるんですけどね・・・

ポインタからバイナリアクセスして無理やり復元してもいいですけど
できればMarshal周りでやってみたいんです・・
ふらっと C#,C♯,C#(初心者用) Part113
251 :デフォルトの名無しさん[]:2014/11/11(火) 22:31:15.43 ID:qSp4OacN
C++側はこんな感じのものを返してくるようです
this->HogegeInfoList = new HOGEGE_INFO[this->HogegeSize];
ふらっと C#,C♯,C#(初心者用) Part113
252 :デフォルトの名無しさん[]:2014/11/11(火) 22:31:49.05 ID:qSp4OacN
>>250
それも試してみましたがダメでした
どうもC++DLL側で落ちてる感じでした
ふらっと C#,C♯,C#(初心者用) Part113
254 :デフォルトの名無しさん[]:2014/11/11(火) 22:38:43.05 ID:qSp4OacN
>>253
開放はdll側が面倒見るみたいです
関数をアクセスすると以前確保した構造体があればそれを開放した後新規に作ってくれるようです。
ふらっと C#,C♯,C#(初心者用) Part113
255 :デフォルトの名無しさん[]:2014/11/11(火) 22:42:18.70 ID:qSp4OacN
それにdllを使うのは一時的なものにする予定で
基本的にはC#のコンソールアプリからこのdllを呼び出す構造にしておいて
このコンソールアプリも必要なときに子プロセスとして起動して短時間で
落とすので最悪はOSが開放してくれることを期待してます。
ふらっと C#,C♯,C#(初心者用) Part113
256 :デフォルトの名無しさん[]:2014/11/11(火) 22:57:43.98 ID:qSp4OacN
見てもらったほうが早いかな・・・
EDCBってソフトのEpgDataCap3.dllの糞ARIB周りの処理だけ拝借したいんですよね・・・
https://github.com/epgdatacapbon/EDCB/tree/master/EpgDataCap3

RecTaskを操作してUDPでtsを送ってもらってそれをUDP受信して
EPG情報が入ってるtsパケットだけを抽出してEpgDataCap3.dllに流し込んで
糞ARIBの糞文字コードからs-jisなどの比較的扱いやすい情報に変換したいんです・・・

構造体を使わないやりとの関数は動いてるんですが構造体をやり取りするところがどうも・・・
ふらっと C#,C♯,C#(初心者用) Part113
258 :デフォルトの名無しさん[]:2014/11/11(火) 23:33:03.14 ID:qSp4OacN
>>257
一つ目は取れたみたいです
SERVICE_INFO _SERVICE_INFO = (SERVICE_INFO)Marshal.PtrToStructure(serviceList, typeof(SERVICE_INFO));

Marshal.PtrToStructureの第一引数でSERVICE_INFOの長さを足しこみたい場合はどう書けばいいんだろう
ふらっと C#,C♯,C#(初心者用) Part113
259 :デフォルトの名無しさん[]:2014/11/11(火) 23:49:20.44 ID:qSp4OacN
>>258の件も解決しました
構造体の配列の移動うまくいったようでテストプログラムで与えてる
録画済みのtsのパケットから情報を取り出せたようです。

いろいろお手数おかけしました


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。