Post

파일 형식 또는 파일 확장명이 잘못되어 파일을 열 수 없습니다. 파일이 손상되지 않았는지 파일 확장명이 파일 형식과 일치하는지 확인하십시오

엑셀 파일을 열때마다 이 엑셀파일 에러문구가 자꾸만 떠서 곤란했다.

일단 나 같은 경우엔 엑셀 파일을 한컴 2020으로 열수도 있고 엑셀로도 열수도 있다.

그래서 내 생각엔 한컴 2020으로 저장된게 아닌가 싶었다.

확인해보니 확실히 한컴 2020 엑셀로는 잘 열리는데 마이크로소프트 엑셀로 안열린다.

그래서 한컴 2020 엑셀을 연다음에 한컴 2020 엑셀에서 XLSX로 다른 이름으로 저장.

그 후에 마이크로소프트 엑셀로 여니 잘 되었다!!!

한컴 2020 엑셀으로 잘 열리면 이 방법 추천!

Post

Cocos2d NULL 아니라 nullptr

1. cocos2dx null 체크

define 되어있는걸로 봐서는 NULL 0 이라서

이건 쓰면 안될 거 같은데;;; 하고 있다가 찾아보니

C++11부터는 nullptr 쓰면 된다고 적혀 있었음 ㅇㅇ

그래서 nullprt을 사용했다.

2. cocos2dx 한글 폰트 적용

1) visual studio 출력단에서 글자가 깨지는 경우.

이 경우에는 헤더, cpp 파일 인코딩이 다른 경우라 다른이름으로 저장-인코딩해서 저장- 유니코드 utf8로 변경해주면된다.

2) cocos2d System font를 사용하고 싶은 경우

#if(CC_TARGET_PLATFORM == CC_PLATFORM_WIN32)
#pragma execution_character_set("utf-8")
#endif

선언해두고 

createWithSystemFont 함수로 읽을 한글 폰트를 갖다놓는다.

text = Label::createWithSystemFont("한글폰트야 나와라!!!!", "fontname.ttf", 50);

 근데 생각해보니까...따로 fonts 폴더에 폰트 넣은 뒤에

폴더 경로를 지정을 안해줬는데 잘 읽히네?

왜죠?

난관은 내가 원하는 위치에 텍스트를 출력하는 건데

이게 생각보다 잘 안된다. 어느 디바이스든 고르게 잘 출력하고 싶은데 안돼...

좌표계 헷갈려 ㅠㅠㅠ살려줘ㅠㅠㅠㅠㅠ

Post

Cocos2dx 소멸자 CCLog 에러

Cocos2dx 소멸자 CCLog 에러

이해할 수 없는 에러가 떴다...

왜 소멸자를 찾지 못하죠?

오류	LNK2019	"void __cdecl cocos2d::CCLog(char const *,...)"
(?CCLog@cocos2d@@YAXPBDZZ)"public: virtual __thiscall HelloWorld::~HelloWorld(void)"
(??1HelloWorld@@UAE@XZ) 함수에서 참조되는 확인할 수 없는 외부 기호
vg	H:\CocosProject\vg\HelloWorldScene.obj	1

근데 내가 자세히 안봐서...

소멸자를 못찾은게 아니라 CCLog 함수를 못찾은 것...

CCLOG 헤더 파일 CCPlatformMacros.h 를 include 하거나

cocos2d.h 헤더추가

Post

// 현재 위치 구하기
TCHAR filePath[_MAX_PATH]; // 현재 디렉토리
GetCurrentDirectory(_MAX_PATH, filePath);

string a = TCHARtoString(filePath);

printf("현재 디렉토리:%s", a.c_str());
			
const std::string TCHARtoString(const TCHAR* tcharStr) {
	int len = wcslen((wchar_t*)tcharStr);

	char resultStr[200]; //경로가 길므로 적당한 사이즈를 지정해준다
	size_t tcnt;

	wcstombs_s(&tcnt, resultStr, sizeof(resultStr), (wchar_t*)tcharStr, 2 * len + 1);

	return resultStr;
}

wcstombs_s 함수를 사용한다.

GetCurrentDirectory를 함수에서 TCHAR 형으로 현재 디렉토리 주소를 받아와서

어쩔 수 없이 TCHAR to String을 해야 했다.

근데 잘 안보이고ㅠㅠㅠ

고생고생하다가 겨우 찾았다ㅠㅠ

wcstombs_s 함수의 인자 출처:

https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/wcstombs-s-wcstombs-s-l?view=msvc-170

 

wcstombs_s, _wcstombs_s_l

자세한 정보: wcstombs_s, _wcstombs_s_l

learn.microsoft.com

 

 

Post

1. getVisibleOrigin 에서 가져오는 값이 뭘까?

auto visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();

출력해보니 Director::getInstance()->getVisibleSize();는 내가 지정한 해상도이다.

getVisibleOrigin()은 뭔지 잘 모르겠다. 코드보니 scale 사용하고 어쩌구 있는데 잘 모르겠으니

패스당...(할게 너무 많아ㅠㅠ)

visibleSize.width: 400.000000 height: 800.000000 origin x: 0.000000 y: 0.000000

Post

	map<int, GameObject*> gameObjects;
    
    // 동적 할당 해제
	for (map<int, GameObject*>::iterator it = gameObjects.begin(); it!= gameObjects.end(); it++) {
		delete it->second;
	}

	gameObjects.clear();

c++ stl Map 동적할당 해제 예제 
이터레이터에서 두번째 인자를 해제 해주고 map전체 clear

Post

필요한 거 그때그때 추가하자

헤더, cpp 이동: ctrl+k, o

이전 커서 위치로 이동 ctrl + -

Post

#include <iostream>
#include <string>
#include <fstream>

using namespace std;

int main()
{
	string str_buf;
	fstream fs;

	fs.open("test.csv", ios::in);

	while (!fs.eof()) {
		std::getline(fs, str_buf, '\n');
		printf("%s", str_buf.c_str());
	}
	fs.close();

	return 0;
}

C++ csv 파일 읽기 예제

string.h는 문자열에 관련된 함수를 사용하는 거고 getline을 사용하려면 string 헤더를포함해야한다는 걸 명심할 것

string을 printf로 출력하려면 c_str()함수 호출.

std::getline(fs, str_buf, '\n'): getline은 한줄 씩 읽는 함수. 세번째 인자는 어느 문자열을 만나면 여기까지 읽겠다는 뜻. 즉 \n 이므로 한줄을 읽게 된다. 세번째 인자를 잘못넣어주면 그냥 텍스트 파일을 통째로 읽게 된다.

너무 오랜만에 해서 다 까먹었다...

Post

cmd켜고 project에서 proj.android로 이동한다.

거기서 안드로이드 빌드 명령어 수행

cocos compile test- p android

cocos compile baseproject -p android

baseproject 자리에 프로젝트 이름 넣을 것

bin 폴더에 간다. 그 안에 baseproject-debug.apk apk 존재

project\projectname\bin\debug\android

그런데 한번 빌드한 프로젝트를 다시 빌드하려고 하니 다음과 같은 에러가 나왔다.

The target platform is not specified.
You can specify a target platform with '-p' or '--platform'.
Available platforms : ['win32', 'android']

cocos compile test- p android

라고 했는데 왜 대상 플랫폼이 지정되지 않았다고 뜨지?

andorid target list 로 안드로이드 버전 확인하고(28~34)

되는 안드로이드 버전 cocos compile test- p android --ap 28

를 해봤지만 안됨.

https://stackoverflow.com/questions/23551144/cocos2d-x-doesnt-find-android-platform

 

cocos2d-X doesn't find android platform

I'm using cocos2d-X v3 and I created a new cocos2d-X project following this tutorial. But when I run cocos run -s ~/MyCompany/MyGame -p android I get this error: building apk Android platform ...

stackoverflow.com

ANT 경로를 다시 삭제하기 보다  %ANDROID_SDK%\tools 경로를 추가하는게 좋아보이는데

어떻게 해야하는지 모르겠다.

아니... 그냥 내가 명령어를 막 갖다붙여서 생긴 일이었다...프로젝트 이름도 생각안하고

cocos compile baseproject -p android

baseproject 는 프로젝트 이름...

그러면 apk 빌드가 잘된다!

Post

크롬에서 jfif확장자 png jpg로 저장하기(jfif to png)

크롬에서 이미지 저장할 때 마다 jfif로 저장되니 여간 불편한게 아니다 ㅠㅠ

그래서 크롬에서 jfif확장자 png나 jpg로 저장하는 방법을 찾아보았다.

방법은 아래와 같다.

1.window+r로 reigster 검색

2. 컴퓨터\HKEY_CLASSES_ROOT\mime\Database\Content Type\image

3. Extention 에 데이터가 jfif일 것이다. 이걸 원하는 확장자로 바꿔준다.

크롬에서 jfif확장자 png나 jpg로 저장하는 방법 요약 끝

▲ top