rockafeller回答ポイント 70ptウォッチ 1

プログラム初心者です.

以下のようにVC++でSharedMemoryを使ってクラスを複数プロセスで共有したいと思っていますが
cv::Mat* mat;のようなポインタを含むクラスの共有が上手くいかないで困っております.
なにか上手い方法をご存知の方がいましたらご指導いただけないでしょうか?
# Sender側のプログラムで読み込んだ画像(Test.jpg)をメモリ経由でReciever側のプログラムから読みたいと考えています


# 共通
class ShareData
{
public:
int hoge;
float pt[10];
cv::Mat* mat;
};
HANDLE SMhandle;
ShareData *data;

void init(){
SMhandle = CreateFileMapping((HANDLE)0xFFFFFFFF, 0,PAGE_READWRITE,0,sizeof(ShareData),"SMtest");
data = (ShareData*)MapViewOfFile(SMhandle, FILE_MAP_WRITE,0,0,sizeof(ShareData));
}
void close(){
UnmapViewOfFile(SMhandle);
CloseHandle(SMhandle);
}

# Sender側======================
void main(){
init();
cv::Mat img;
std::string filename("C:\\Test.jpg");
img = cv::imread(filename);

while(1){
data->hoge = 1;
data->mat = &img;
printf("address:%p\n",&img);
}
close();
}


# Reciever側======================
void main(){
init();
while(1){
printf("hoge=%d\n",data->hoge);
printf("mat=[%d,%d]\n",data->mat->cols,data->mat->rows);
printf("address:%p\n",data->mat);
}
close();
}

※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
ログインして回答する

みんなの回答

この質問へのコメント

コメントはありません

この質問への反応(ブックマークコメント)

質問の情報

登録日時
2011-04-22 17:42:41
終了日時
2011-04-29 17:45:03
回答条件
1人5回まで

この質問のカテゴリ

この質問に含まれるキーワード

VC++175hoge915CV18ポインタ140プロセス576Class541プログラム5048

人気の質問

メニュー

PC版