リソースファイル.rcに文字列テーブルを実装しようとしていて、関数CString :: LoadStringW()を使用して特定の文字列をロードしようとしています。 これはコードmain.cppにある:C++ビジュアルスタジオリソース
#ifndef _AFXDLL
#define _AFXDLL
#endif
#include <afx.h>
#include <stdio.h>
#include "resource.h"
int main()
{
printf("Code Example: Load resource file data\n");
CString sentence;
sentence.LoadStringW(IDS_STRING101);
printf("Sentence: %s", sentence);
getchar();
return 0;
}
記述との良好なリンクのようにリソースファイルを使用する方法、すでにありますとき、私に問題がある
http://www.cplusplus.com/forum/windows/119338/
http://www.winprog.org/tutorial/resources.html
コードをコンパイルしてから実行しようとすると、文字列は読み込まれません。コンパイル済みのリソースファイル.RCと私のソースファイルの主をリンクする(最後のステップとして)私が提供される最初のURLの末尾に
Debug Assertion Failed!
Program: C:\WINDOWS\SYSTEM32\mfc140ud.dll
File: f:\dd\vctools\vc7libs\ship\atlmfc\include\afxwin1.inl
Line: 24
For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.
:デバッグのとき 、LoadStringWとのラインは()関数は、アサーションエラーがスローされます.cpp。 これを行う方法がわかりません。おそらくこれが私のプログラムが期待どおりに動作しない理由です。
お願い、お勧めはありますか?
私はMSVS 2015/2017年に
感謝をしようとしています。
あなたのリソースファイルはどのように見えますか?アサーションを引き起こすのはどのラインですか?なぜあなたは '_AFXDLL'を上に定義していますか? – VTT
アサーションは 'sentence.LoadStringW(IDS_STRING101);'行によって引き起こされます。 MFCとランタイムライブラリオプション/ MDdを使用しているので、私は '_AFXDLL'を使用します。私はちょうどコンパイラエラーsutisfied。しかし、この定義を削除して/ MTを使用しても問題は変わりません。私はリソースファイルを簡素化し、短時間でここに提供します... –
アサーションは実際には 'LoadStringW'の中のいくつかのコードによってトリガされます。おそらく本当のアサーションスポット(つまり 'assert(...)')を持つ適切なスタックトレースを表示して、失敗したアサーション条件を判断できますか?また、 'IDS_STRING101'の値は何ですか? 101? – VTT