- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の自作関数がエラーになる)
C言語の自作関数がエラーになる
このQ&Aのポイント
- C言語でWindowsのプログラミングを学習中ですが、ある自作の関数でエラーが発生します。エラーメッセージは「未解決の外部シンボル」となっており、関数の引数に制限があるのか疑問です。
- Microsoft Visual C++ 2008 Express Editionを使用している環境で、自作関数の引数に制限があるのか確認したいです。
- 自作関数の引数をHWNDだけにした場合は問題がないことがわかりましたが、他の引数が原因でエラーが発生しているようです。制限があるならばどのように修正すれば良いか教えていただきたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
エラーが出るとかいうのなら、そのエラーをちゃんと書かないと答えなんか出てきませんよ。 ま、上記のコードを見たら、関数の実体が定義されていないからリンクエラーになってるだけだと思いますが。 > 関数の引数をHWNDだけにした場合は問題ありませんでした。 それは嘘か、それともその時のコードは上記と同じ形では無かったんでっしょうね。 一番下のところ >int MySave(buffer,hWnd,iCount); >・ >・ >・ >} ここが本来の関数の実体だと思われますが、関数名の後に「;」が付いてるから、プロトタイプ宣言としか認識されていないのでしょう。ま、その下でコンパイルエラーが発生していないのが謎ですが、関数の次の行に「{」でも付いてたら、名前のない処理ブロックとして解釈されているのかもしれません。
その他の回答 (1)
- asuncion
- ベストアンサー率33% (2127/6289)
回答No.2
>エラー内容は「未解決の外部シンボル・・・」といった内容です。 「・・・」の部分が肝心です。省略しないでください。 >自作関数の引数に型の制限はあるのでしょうか? そういった制限はありません。
質問者
お礼
ありがとうございました。 申し訳ございません。 下記のTCHARをポインタに指定していませんでした。 int MySave(TCHAR *buffer,HWND hWnd,int iCount) { ちなみにエラーは、下記でした。 ご教授ありがとうございました。 「error LNK2001: 外部シンボル ""int __cdecl MySave(wchar_t *,struct HWND__ *,int)" (?MySave@@YAHPA_WPAUHWND__@@H@Z)" は未解決です。」
お礼
もうしわけございません。 質問文に書いた書いたコードは間違いでした。 すぐに書き直そうとしましたが・・・ 本当に申し訳ないです。 実際コードの一番下は↓です。 int MySave(TCHAR buffer,HWND hWnd,int iCount){ TCHAR をポインタとして呼び出していませんでした。 早速のご回答ありがとうございました。