※ ChatGPTを利用し、要約された質問です(原文:IMalloc_Free: 識別子が見つかりません<-どこにあるのでしょう)
IMalloc_Free: 識別子が見つかりません<-どこにあるのでしょう
このQ&Aのポイント
「IMalloc_Free: 識別子が見つかりません<-どこにあるのでしょう」というエラーが発生しています。
質問者は、日経ソフトウェア誌の記事をまとめた「APIで学ぶWindows徹底理解」というムック本のコードを参考にしています。
タイマーを用いた間欠ファイルコピーのソースをビルドしようとしていますが、IMalloc_Freeという識別子が見つからず、ビルドできません。
IMalloc_Free: 識別子が見つかりません<-どこにあるのでしょう
日経ソフトウェア誌の記事をまとめた、「APIで学ぶWindows徹底理解」
http://software.nikkeibp.co.jp/software/backno/04apimook1.html
というムック本のコードをなぞってみようとしているのですが、タイマーを用いた間欠ファイルコピーのソースを、VC++2005standard版のプロジェクトに載せ替えてビルドすると、
「error C3861: 'IMalloc_Free': 識別子が見つかりませんでした」
というエラーが1個残り、ビルドできません。
ソースは上記URLからダウンロードできる、apip3.lzhのtimer\FileCopy.Cにありますが、下記ヘッダーファイルを指定しております。
#define COBJMACROS
#include <windows.h>
#include "stdafx.h"
#include<Commdlg.h>
#include <shlobj.h>
#include <stdlib.h>
#include <stdio.h>
#include <objidl.h>
IMalloc_Freeはどこで規定しているのでしょうか。WEB上では、日本語の情報はほとんど見つかりませんでした。また、C:ドライブ全体に全文検索をかけても、ヘッダーファイル等の中ではヒットしませんでした。
英文のサイトで見つけた下記定義を試しに加えてみると、エラーが出なくなりましたが、意味も分かっていないので心配です。
#define IMalloc_Free(self, list) ((self)->Free(list))
#define IMalloc_Release(self) ((self)->Release())
正解をご存じの方、よろしくお願いいたします。
お礼
試行までしていただき、ありがとうございました。 プロジェクトが沢山できるのが嫌で、複数のソースを#ifdefで囲ってプロジェクトファイルの使い回しをしておりました。ご指摘の通り、新規にプロジェクトを作成してビルドすると、ビルドできました。試しにソースの拡張子を変更してFileCopy.cppにすると、先のエラーが発生しました。この場合は、No.3のご回答にあった、 >『C コードとしてコンパイル (/TC)』に変更して リビルド すると、エラーが出なくなりました。 お手数をおかけして申し訳ありません。おかげ様で、ヘッダーファイルの中味について、少し勉強になりました。 もうしばらく置いてから、閉めさせていただきます。