리소스 테이블 .rc에 문자열 테이블을 구현하고 CString :: LoadStringW() 함수를 사용하여 특정 문자열을로드하려고합니다. 이 코드 MAIN.CPP입니다 :C++ Visual Studio 리소스
#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 내 소스 파일 주를 연결하는 (마지막 단계) I가 제공하는 첫 번째 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.
: debuging 때 , LoadStringW으로 라인() 함수는 어설 션 오류가 발생합니다 .cpp. 이 작업을 수행하는 방법을 잘 모르겠습니다. 아마도 이것이 내 프로그램이 예상대로 작동하지 않는 이유 일 수 있습니다.
제발, 추천 해 주시겠습니까?
나는 MSVS 2015/2017을 시험 중이다.
고마워.
리소스 파일의 모양은 무엇입니까? 주장을 일으키는 줄은 무엇입니까? 상단에'_AFXDLL'이 정의 된 이유는 무엇입니까? – VTT
어설 션은'sentence.LoadStringW (IDS_STRING101);'행에 의해 발생합니다. MFC와 런타임 라이브러리 옵션/MDd를 사용하기 때문에'_AFXDLL'을 사용합니다. 난 그냥 컴파일러 오류 sutisfied. 그러나이 정의를 제거하고/MT를 사용한다고해서 문제가 바뀌지는 않습니다. 나는 리소스 파일을 단순화하고 짧은 시간에 여기에 제공 할 것이다 ... –
어설 션은 실제로 LoadStringW 내부의 일부 코드에 의해 트리거된다. 어쩌면 진짜 assertion spot (즉 assert (...))을 가진 적절한 스택 트레이스를 보여 주어 실패한 assertion condition을 결정할 수 있습니까?또한'IDS_STRING101'의 값은 무엇입니까? 101? – VTT