- ふらっと 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のパケットから情報を取り出せたようです。 いろいろお手数おかけしました
|