C++ で「Windows のアプリケーション間の連携を」学習しているのですがいまいちわかりません。
C++ のメモリ共有というものでできるらしいのですが、参考にしているサンプルコードがコンパイルできず先に進めません。。
なかなかこのあたりの情報がなく学習が進みません。。こちらでは以前先達の方々にやさしく教えていただけてるので、また質問させていただきました。。
下記コードを動くことを確認した上で、サンプルコードをいじったりして学習したいと思っています。
当方プログラミング初心者(非プログラマー&趣味レベル)ですので、わかりやすく教えていただけると幸いです。よろしくお願いいたします。
(環境)
Visual Studio Community 2015 / C++
参考サイトのコードはこれ
/* filemapping01.c */ #include <stdio.h> #include <windows.h> #include <conio.h> int FRead(LPSTR); int FWrite(LPSTR); HANDLE hFMWrite; int main() { static LPSTR lpAddress1, lpAddress2; char szNo[8]; BOOL bEnd = FALSE; while (1) { printf("***************\n"); printf("1. Writre\n"); printf("2. Read\n"); printf("0. End\n"); printf("***************\n"); printf("No. = "); gets(szNo); switch (szNo[0]) { case '1': FWrite(lpAddress1); break; case '2': FRead(lpAddress2); break; case '0': bEnd = TRUE; break; default: printf("正しくない番号です\n\n"); break; } if (bEnd) break; } if (hFMWrite) { if (CloseHandle(hFMWrite) == 0) printf("書き込みハンドルクローズ失敗\n"); else printf("書き込みハンドルクローズ成功\n"); } return 0; } int FWrite(LPSTR lpStr) { char szStr[1024]; if (!hFMWrite) CloseHandle(hFMWrite); hFMWrite = CreateFileMapping( (HANDLE)-1, NULL, PAGE_READWRITE, 0, 1024, "NEKODEMOWAKARU"); if (hFMWrite == NULL) return -1; if (GetLastError() == ERROR_ALREADY_EXISTS) printf("すでにマッピングオブジェクトが存在しました\n"); lpStr = (LPSTR)MapViewOfFile(hFMWrite, FILE_MAP_ALL_ACCESS, 0, 0, 0); if (lpStr == NULL) return -2; printf("書き込み=="); gets(szStr); strcpy(lpStr, szStr); strcat(lpStr, "\n"); UnmapViewOfFile(lpStr); printf("書き込みました\n"); return 0; } int FRead(LPSTR lpStr) { HANDLE hFM; hFM = OpenFileMapping(FILE_MAP_ALL_ACCESS, FALSE, "NEKODEMOWAKARU"); lpStr = (LPSTR)MapViewOfFile(hFM, FILE_MAP_ALL_ACCESS, 0, 0, 0); if (lpStr == NULL) { printf("受信失敗\n"); CloseHandle(hFM); return -1; } printf(lpStr); if (UnmapViewOfFile(lpStr) == 0) { printf("読み込み用アドレスアンマップ失敗\n"); } else { printf("読み込み用アドレスアンマップ成功\n"); lpStr = NULL; } CloseHandle(hFM); return 0; }
(エラー内容)
● 'gets': 識別子が見つかりませんでした
●'strcat': This function or variable may be unsafe. Consider using strcat_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.

回答7件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/03/20 03:50