v8 javascript Engine 질문 드립니다.

kenwoo87의 이미지

안녕하세요.
여기다 질문 드려도 될지 모르겠습니다만 혹시나 사용해보신 분이 있으실까 해서 도움 좀 부탁드리고자 글을 올려 봅니다.

음 간략하게 말해서 구글에서 오픈소스 프로젝트로 진행되는 v8 javascript Engine 이라는 것이 있는데 이걸 이용하여 visual sudio c++ win32 application console 에서 사용해보려 하고있습니다.

v8소스를 받아 솔루션 파일로 변경해서 lib 파일 h파일 dll파일까지는 생성했는데 이걸가지고 c++에서 실행을 하려면 링크 오류가 납니다 ㅠ

1>------ 빌드 시작: 프로젝트: v8solution, 구성: Release Win32 ------
1>  v8solution.cpp
1>v8solution.obj : error LNK2001: "class v8::Platform * __cdecl v8::platform::CreateDefaultPlatform(int)" (?CreateDefaultPlatform@platform@v8@@YAPAVPlatform@2@H@Z) 외부 기호를 확인할 수 없습니다.
1>C:\Users\Kunwoo\Documents\Visual Studio 2015\Projects\v8solution\Release\v8solution.exe : fatal error LNK1120: 1개의 확인할 수 없는 외부 참조입니다.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

이 부분이고 제가 잘못 프로젝트 속성을 잘못 설정한건지 lib를 놓친게 있는건지 여기저기 자료 찾고 문의를 해봐도 모르겠네요.

일단 저 v8::platform::CreateDefaultPlatform(int) 부분이 선언만 되어있고, 정의가 되어있지 않아 그런 것으로 보이는데 정의 되어있는 default-platform.cc 를 추가 하게되면 다른 default-platform.cc 사용하는 헤더파일이 누락으로 나옵니다. 해당 헤더파일을 찾아 추가 하게되면 그 헤더파일에서 누락된 헤더파일이 있다고 나오구요 이렇게 헤더파일을 가져다 맞추다 보면 결국 __asm__ 같은 어셈블리어 코드에서 에러가 납니다.

아마 가져온거나 속성 부분에서 놓친게 있을거라 생각이 되는데, 3주 넘게 막혀서 진행이 되지 않네요.

https://gist.github.com/anonymous/8e5bc61a057d59735bb4de015a7d8f6d 이 곳에 .vcxproj 파일과 .cpp 파일을 올렸는데 속성이나 코드는 여기서 확인 해주시면 될거 같습니다.

아는 분 있으시면 답변 부탁드릴께요.. ㅠㅠ
따로 필요하신 환경 부분이나 자료가 있으시면 업데이트 하여 추가 하겠습니다.

라스코니의 이미지

제가 Qt + v8을 사용하고 있습니다.
보통 저런 메시지가 나오면 C/C++ Demangling issue와 관련된 오류 메시지일 확률이 높습니다.
아마 CreateDefaultPlatform() 에서 호출하는 외부 함수가 여기에 걸린 것 같습니다.
널리 알려진 해결책은 해당 코드를 extern "C" { } 로 감싸 주는 것인데 코드를 보지 않아서 모르겠지만,,,, 보통은 필요가 없는 일입니다.

v8 lib/dll을 import하고 나서 순전히 v8 example 을 컴파일 할때도 동일한 메시기가 나오나요?
한번 코드를 봐야 겠네요.

라스코니의 이미지

올려놓으신 코드를 보니

#include <stdio.h> 
#include <stdlib.h> 
#include <string.h> 
 
#include "include/libplatform/libplatform.h" 
#include "include/v8.h" 
 
using namespace v8; 
 
int main(int argc, char* argv[]) { 
	// Initialize V8. 
 	V8::InitializeICUDefaultLocation(argv[0]); 
 	V8::InitializeExternalStartupData(argv[0]); 
 	Platform* platform = platform::CreateDefaultPlatform(); 
 	V8::InitializePlatform(platform); 
 	V8::Initialize(); 

처럼 platform::CreateDefaultPlatform(); 를 호출하고 계시네요?
이 문장이 원래 example에 들어있는 것이었나요? CreateDefaultPlatform() 함수가 static 등으로 외부 참조가 되도록 선언되지 있지 않는 한 클래스 내부가 아닌 외부에서 부를수가 없습니다. 그리고 Platform이 클래스인데 객체가 존재하지 않는데 그 내부 함수를 호출할 수 있을리가 없습니다.

보통은

Platform* platform = new platform();
platform->CreateDefaultPlatform();

식으로 하죠.

kenwoo87의 이미지

네 저 소스는 그냥 예제에 있던 소스를 복붙한거라 예제도 저렇게 되어있구요 실제 컴파일 시에도 이상이 없어서 그대로 붙여서 돌려보긴 한건데.
저렇게 말고도 V8::InitializePlatform(platform::CreateDefaultPlatform()); 따로 객체 생성 부분없이 이런식으로도 사용한다고 되있더라구요.
라스코니 님게서 얘기 하신대로 소스 수정을 해보면

1>------ 빌드 시작: 프로젝트: v8solution, 구성: Release Win32 ------
1>  v8solution.cpp
1>v8solution.cpp(15): error C2259: 'v8::Platform': 추상 클래스를 인스턴스화할 수 없습니다.
1>  v8solution.cpp(15): note: 다음 멤버가 원인입니다.
1>  v8solution.cpp(15): note: 'void v8::Platform::CallOnBackgroundThread(v8::Task *,v8::Platform::ExpectedRuntime)': abstract입니다.
1>  c:\users\kunwoo\documents\visual studio 2015\projects\v8solution\v8solution\include\libplatform\../v8-platform.h(75): note: 'v8::Platform::CallOnBackgroundThread' 선언을 참조하십시오.
1>  v8solution.cpp(15): note: 'void v8::Platform::CallOnForegroundThread(v8::Isolate *,v8::Task *)': abstract입니다.
1>  c:\users\kunwoo\documents\visual studio 2015\projects\v8solution\v8solution\include\libplatform\../v8-platform.h(83): note: 'v8::Platform::CallOnForegroundThread' 선언을 참조하십시오.
1>  v8solution.cpp(15): note: 'void v8::Platform::CallDelayedOnForegroundThread(v8::Isolate *,v8::Task *,double)': abstract입니다.
1>  c:\users\kunwoo\documents\visual studio 2015\projects\v8solution\v8solution\include\libplatform\../v8-platform.h(91): note: 'v8::Platform::CallDelayedOnForegroundThread' 선언을 참조하십시오.
1>  v8solution.cpp(15): note: 'double v8::Platform::MonotonicallyIncreasingTime(void)': abstract입니다.
1>  c:\users\kunwoo\documents\visual studio 2015\projects\v8solution\v8solution\include\libplatform\../v8-platform.h(121): note: 'v8::Platform::MonotonicallyIncreasingTime' 선언을 참조하십시오.
1>v8solution.cpp(16): error C2039: 'CreateDefaultPlatform': 'v8::Platform'의 멤버가 아닙니다.
1>  c:\users\kunwoo\documents\visual studio 2015\projects\v8solution\v8solution\include\libplatform\../v8-platform.h(45): note: 'v8::Platform' 선언을 참조하십시오.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

이렇게 추상클래스 라고 오류가 나옵니다. ㅠㅠ
라스코니의 이미지

네. 그렇게도 사용 가능합니다.
이것은 demangling 이슈인 것 같네요. 가장 간단하고 원시적인 방법은 Platform 클래스의 헤더파일을 extern "C" { } 으로 감싸는 것입니다.

#ifdef cplusplus
extern "C" {
#endif
#include "Platform.h"
#ifdef cplusplus
extern }
#endif

등 입니다.

kenwoo87의 이미지

Platform class가 정의 되어있는 v8-platform.h 파일을

#include <v8.h>
#include <libplatform\libplatform.h>
 
#ifdef cplusplus
extern "C" {
#endif
#include <v8-platform.h>
#ifdef cplusplus
	extern}
#endif

요렇게 추가하였는데 같은 증상이 나타 나네요.

실제로 적용하는 헤더파일이 v8.h과 libplatform.h라 두 헤더를 extern "C" 하면

이 선언에 외부 'C' 링크를 사용할수 없다고 200개 가량 나오구요 ㅠ

라스코니의 이미지

네. 그래서 제가 위의 방법을 원시적(?)인 방법이라고 적은 것 입니다.
거의 대부분의 경우에 library를 include 하는 경우 demangling을 고려할 필요가 없습니다.

v8.dll and/or v8.lib 가 프로젝트에 잘 import 되었는지 확인해 보세요.
v8 라이브러리 path도 지정되어 있는지도요.

그리고 demangling은
#ifdef __cplusplus
extern "C" {
#endif

#include "...h" 또는 .h 파일 내에 적용

#ifdef __cplusplus
}
#endif

와 같이 하셔야 합니다.

kenwoo87의 이미지

demangling은 아무래도 이상한듯 싶어 인터넷 검색으로 라스코니 님께서 수정하신대로 __cplusplus 형식으로 고쳐서 실행해봤습니다만 같은 결과가 나오네요 ㅠㅠ 얘기 해주신대로 import 부터 확인해 보겠습니다. 도움 주셔서 감사합니다 (__) 제가 혹시나 놓친 부분이 있는지 다시 한번 천천히 찾아보면서 봐봐야 겠네요. 감사합니다 ^^

라스코니의 이미지

생성한 v8 라이브러리가 VC++ 용으로 빌드되었나요? cygwin이나 mingw 용도로 빌드된 것은 아닌가요?

kenwoo87의 이미지

제가 찾은 자료에서는 v8 소스를 VS sln 파일로 변환해서 빌드하고 컴파일 하는 부분만 찾았구요. 따로 용도에 맞춰 빌드하는 부분은 못 찾았습니다. 그냥 all 프로젝트를 빌드 하면 된다고 되어있길래 그렇게 lib를 생성하였구요. 아무래도 v8 소스가 업데이트할 때마다 조금씩 바뀌는 거 같아서 저랑 맞는 환경의 자료를 찾기가 어려웠습니다; 예전 scons로 생성할 때랑 제가 생성한 gyp를 이용한 거랑 최근엔 gn으로 생성하는 방법마다 생성 방법이 다르고, 사용 방법도 Isolate가 생기거나 Handle로 사용하던 부분이 Local로 변경된다던지 하는 부분이 있어서 그런건지 아니면 제가 못 찾는건지 찾기가 힘들더라구요; lib 파일은 v8.lib와 v8_base.lib, nosnapshot.lib가 있으면 된다고 알고있고 libplatform.lib를 사용하라고 하는분도 있어서 사용 시 중복 정의 같은 오류가 나서 import 하지는 않았습니다. 헤더 파일은 그냥 include 폴더 통째로 복사하여 사용 중이구요. 좀 더 자세한 사항은 영어 실력이 꽝이지만 stackoverflow쪽에도 올려 두었습니다.http://stackoverflow.com/questions/39098058/how-to-use-googles-v8-in-c-application (여기에 쓰기엔 글이 너무 길어질 듯 싶어 링크로 대체 합니다..)

라스코니의 이미지

그냥 단순히 libplatform.lib 가 없어서 나는 걸수도 있습니다. 차라리 libplatform.lib 를 넣을 때 어떤 중복 정의 오류가 나는지 확인해 보시고... v8.lib에 확실히 CreateDefaultPlatform() 정의가 있는지 확인해 보시고, 만약 없다면 libplatform.lib 에는 있는지 확인하셔야 할 듯 합니다.

kenwoo87의 이미지

추가 종속성에 v8_libplatfrom.lib를 추가하여 빌드 해보니 제가 오류를 잘 못 봤네요.

1>------ 빌드 시작: 프로젝트: v8Application2, 구성: Release Win32 ------
1>  v8application2.cpp
1>v8_libplatform.lib(default-platform.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>libcpmtd.lib(stdthrow.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>libcpmtd.lib(stdthrow.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MD_DynamicRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>LINK : warning LNK4098: 'LIBCMTD' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: __invalid_parameter 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: __invalid_parameter 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: __invalid_parameter 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: __invalid_parameter 외부 기호를 확인할 수 없습니다.
1>libcpmtd.lib(stdthrow.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: static int __cdecl v8::base::SysInfo::NumberOfProcessors(void)" (?NumberOfProcessors@SysInfo@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Semaphore::Semaphore(int)" (??0Semaphore@base@v8@@QAE@H@Z) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Semaphore::~Semaphore(void)" (??1Semaphore@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Semaphore::Signal(void)" (?Signal@Semaphore@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Semaphore::Wait(void)" (?Wait@Semaphore@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: __thiscall v8::base::Thread::Thread(class v8::base::Thread::Options const &)" (??0Thread@base@v8@@QAE@ABVOptions@012@@Z) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: virtual __thiscall v8::base::Thread::~Thread(void)" (??1Thread@base@v8@@UAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: void __thiscall v8::base::Thread::Start(void)" (?Start@Thread@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: void __thiscall v8::base::Thread::Join(void)" (?Join@Thread@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static int __cdecl v8::base::OS::GetCurrentProcessId(void)" (?GetCurrentProcessId@OS@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static int __cdecl v8::base::OS::GetCurrentThreadId(void)" (?GetCurrentThreadId@OS@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static class v8::base::ThreadTicks __cdecl v8::base::ThreadTicks::Now(void)" (?Now@ThreadTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>C:\Users\Kunwoo\Documents\Visual Studio 2015\Projects\v8Application2\Release\v8Application2.exe : fatal error LNK1120: 20개의 확인할 수 없는 외부 참조입니다.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

이렇게 외부 기호를 찾을 수 없는 오류와 값 불일치 오류가 나옵니다.

생성한 프로젝트 파일 링크 입니다.
http://www.mediafire.com/download/772xa07mzy8ec0a/v8Application2.zip
이상하게 v8_base.lib 들이 크기가 크네요;
(말로만 하기에는 답답하실거 같아서 전체 프로젝트 압축하여 올렸습니다.)

라스코니의 이미지

현재는 받을 수 없어서 확인은 못해 봤지만 인터넷을 찾아보니 시도해 볼만한 방법이 있는것 같습니다.

1. 프로젝트 속성 -> 구성속성 -> 코드 생성을 다중 스레드 디버그 DLL(/MDd) 를 다중 스레드 디버그 (/MTd) 로 변경

2. 프로젝트 속성 -> 구성속성 -> 일반 속성 중 문자 집합 속성을 "멀티바이트 문자 집합 사용"으로 변경

3. example code 앞에 아래 문장 추가
#ifdef NDEBUG
#ifdef _DEBUG
#undef _DEBUG
#endif
#endif

행운을 빕니다~~

kenwoo87의 이미지

헛 저도 그 부분 찾아서 시도해 보고있는 중 이었는데 같은걸 찾으셨네요 ^^

Release 모드에서 에서 c++ 코드 생성 부분을 다중스레드로 변경하고 멀티바이트 문자열로 실행 시

1>------ 빌드 시작: 프로젝트: v8Application2, 구성: Release Win32 ------
1>  v8application2.cpp
1>v8_libplatform.lib(default-platform.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>libcpmtd.lib(stdthrow.obj) : error LNK2038: '_ITERATOR_DEBUG_LEVEL'에 대해 불일치가 검색되었습니다. '2' 값이 '0'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>libcpmtd.lib(stdthrow.obj) : error LNK2038: 'RuntimeLibrary'에 대해 불일치가 검색되었습니다. 'MTd_StaticDebug' 값이 'MT_StaticRelease'(v8application2.obj에 위치) 값과 일치하지 않습니다.
1>LINK : warning LNK4098: 'LIBCMTD' defaultlib가 다른 라이브러리와 충돌합니다. /NODEFAULTLIB:library를 사용하십시오.
1>libcpmtd.lib(stdthrow.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: __CrtDbgReportW 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2001: "public: static int __cdecl v8::base::SysInfo::NumberOfProcessors(void)" (?NumberOfProcessors@SysInfo@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Semaphore::Semaphore(int)" (??0Semaphore@base@v8@@QAE@H@Z) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Semaphore::~Semaphore(void)" (??1Semaphore@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Semaphore::Signal(void)" (?Signal@Semaphore@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Semaphore::Wait(void)" (?Wait@Semaphore@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: __thiscall v8::base::Thread::Thread(class v8::base::Thread::Options const &)" (??0Thread@base@v8@@QAE@ABVOptions@012@@Z) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: virtual __thiscall v8::base::Thread::~Thread(void)" (??1Thread@base@v8@@UAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: void __thiscall v8::base::Thread::Start(void)" (?Start@Thread@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2001: "public: void __thiscall v8::base::Thread::Join(void)" (?Join@Thread@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static int __cdecl v8::base::OS::GetCurrentProcessId(void)" (?GetCurrentProcessId@OS@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static int __cdecl v8::base::OS::GetCurrentThreadId(void)" (?GetCurrentThreadId@OS@base@v8@@SAHXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static class v8::base::ThreadTicks __cdecl v8::base::ThreadTicks::Now(void)" (?Now@ThreadTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>C:\Users\Kunwoo\Documents\Visual Studio 2015\Projects\v8Application2\Release\v8Application2.exe : fatal error LNK1120: 19개의 확인할 수 없는 외부 참조입니다.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

50개의 오류에서 46개 오류로 오류가 4개 줄었지만 오류가 남아있구요.

Debug 모드로 변경하여 코드 생성 부분을 다중 스레드 디버그로 변경하고 멀티바이트 문자열로 실행 시

1>------ 빌드 시작: 프로젝트: v8Application2, 구성: Debug Win32 ------
1>  v8application2.cpp
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: _V8_Fatal 외부 기호(참조 위치: "public: virtual void __thiscall v8::platform::DefaultPlatform::CallIdleOnForegroundThread(class v8::Isolate *,class v8::IdleTask *)" (?CallIdleOnForegroundThread@DefaultPlatform@platform@v8@@UAEXPAVIsolate@3@PAVIdleTask@3@@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(tracing-controller.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(trace-config.obj) : error LNK2001: _V8_Fatal 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호(참조 위치: "public: __thiscall v8::platform::DefaultPlatform::DefaultPlatform(void)" (??0DefaultPlatform@platform@v8@@QAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::Mutex(void)" (??0Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호(참조 위치: "public: virtual __thiscall v8::platform::DefaultPlatform::~DefaultPlatform(void)" (??1DefaultPlatform@platform@v8@@UAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: __thiscall v8::base::Mutex::~Mutex(void)" (??1Mutex@base@v8@@QAE@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: __thiscall v8::base::LockGuard<class v8::base::Mutex>::LockGuard<class v8::base::Mutex>(class v8::base::Mutex *)" (??0?$LockGuard@VMutex@base@v8@@@base@v8@@QAE@PAVMutex@12@@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Lock(void)" (?Lock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: __thiscall v8::base::LockGuard<class v8::base::Mutex>::~LockGuard<class v8::base::Mutex>(void)" (??1?$LockGuard@VMutex@base@v8@@@base@v8@@QAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2001: "public: void __thiscall v8::base::Mutex::Unlock(void)" (?Unlock@Mutex@base@v8@@QAEXXZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호(참조 위치: "public: virtual double __thiscall v8::platform::DefaultPlatform::MonotonicallyIncreasingTime(void)" (?MonotonicallyIncreasingTime@DefaultPlatform@platform@v8@@UAENXZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2001: "public: static class v8::base::TimeTicks __cdecl v8::base::TimeTicks::HighResolutionNow(void)" (?HighResolutionNow@TimeTicks@base@v8@@SA?AV123@XZ) 외부 기호를 확인할 수 없습니다.
1>v8_libplatform.lib(default-platform.obj) : error LNK2019: "public: static int __cdecl v8::base::SysInfo::NumberOfProcessors(void)" (?NumberOfProcessors@SysInfo@base@v8@@SAHXZ) 외부 기호(참조 위치: "public: void __thiscall v8::platform::DefaultPlatform::SetThreadPoolSize(int)" (?SetThreadPoolSize@DefaultPlatform@platform@v8@@QAEXH@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2019: "public: __thiscall v8::base::Semaphore::Semaphore(int)" (??0Semaphore@base@v8@@QAE@H@Z) 외부 기호(참조 위치: "public: __thiscall v8::platform::TaskQueue::TaskQueue(void)" (??0TaskQueue@platform@v8@@QAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2019: "public: __thiscall v8::base::Semaphore::~Semaphore(void)" (??1Semaphore@base@v8@@QAE@XZ) 외부 기호(참조 위치: "public: __thiscall v8::platform::TaskQueue::~TaskQueue(void)" (??1TaskQueue@platform@v8@@QAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2019: "public: void __thiscall v8::base::Semaphore::Signal(void)" (?Signal@Semaphore@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: void __thiscall v8::platform::TaskQueue::Append(class v8::Task *)" (?Append@TaskQueue@platform@v8@@QAEXPAVTask@3@@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(task-queue.obj) : error LNK2019: "public: void __thiscall v8::base::Semaphore::Wait(void)" (?Wait@Semaphore@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: class v8::Task * __thiscall v8::platform::TaskQueue::GetNext(void)" (?GetNext@TaskQueue@platform@v8@@QAEPAVTask@3@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2019: "public: __thiscall v8::base::Thread::Thread(class v8::base::Thread::Options const &)" (??0Thread@base@v8@@QAE@ABVOptions@012@@Z) 외부 기호(참조 위치: "public: __thiscall v8::platform::WorkerThread::WorkerThread(class v8::platform::TaskQueue *)" (??0WorkerThread@platform@v8@@QAE@PAVTaskQueue@12@@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2019: "public: virtual __thiscall v8::base::Thread::~Thread(void)" (??1Thread@base@v8@@UAE@XZ) 외부 기호(참조 위치: "public: virtual __thiscall v8::platform::WorkerThread::~WorkerThread(void)" (??1WorkerThread@platform@v8@@UAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2019: "public: void __thiscall v8::base::Thread::Start(void)" (?Start@Thread@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: __thiscall v8::platform::WorkerThread::WorkerThread(class v8::platform::TaskQueue *)" (??0WorkerThread@platform@v8@@QAE@PAVTaskQueue@12@@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(worker-thread.obj) : error LNK2019: "public: void __thiscall v8::base::Thread::Join(void)" (?Join@Thread@base@v8@@QAEXXZ) 외부 기호(참조 위치: "public: virtual __thiscall v8::platform::WorkerThread::~WorkerThread(void)" (??1WorkerThread@platform@v8@@UAE@XZ) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2019: "public: static int __cdecl v8::base::OS::GetCurrentProcessId(void)" (?GetCurrentProcessId@OS@base@v8@@SAHXZ) 외부 기호(참조 위치: "public: void __thiscall v8::platform::tracing::TraceObject::Initialize(char,unsigned char const *,char const *,char const *,unsigned __int64,unsigned __int64,int,char const * *,unsigned char const *,unsigned __int64 const *,unsigned int)" (?Initialize@TraceObject@tracing@platform@v8@@QAEXDPBEPBD1_K2HPAPBD0PB_KI@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2019: "public: static int __cdecl v8::base::OS::GetCurrentThreadId(void)" (?GetCurrentThreadId@OS@base@v8@@SAHXZ) 외부 기호(참조 위치: "public: void __thiscall v8::platform::tracing::TraceObject::Initialize(char,unsigned char const *,char const *,char const *,unsigned __int64,unsigned __int64,int,char const * *,unsigned char const *,unsigned __int64 const *,unsigned int)" (?Initialize@TraceObject@tracing@platform@v8@@QAEXDPBEPBD1_K2HPAPBD0PB_KI@Z) 함수)에서 확인하지 못했습니다.
1>v8_libplatform.lib(trace-object.obj) : error LNK2019: "public: static class v8::base::ThreadTicks __cdecl v8::base::ThreadTicks::Now(void)" (?Now@ThreadTicks@base@v8@@SA?AV123@XZ) 외부 기호(참조 위치: "public: void __thiscall v8::platform::tracing::TraceObject::Initialize(char,unsigned char const *,char const *,char const *,unsigned __int64,unsigned __int64,int,char const * *,unsigned char const *,unsigned __int64 const *,unsigned int)" (?Initialize@TraceObject@tracing@platform@v8@@QAEXDPBEPBD1_K2HPAPBD0PB_KI@Z) 함수)에서 확인하지 못했습니다.
1>C:\Users\Kunwoo\Documents\Visual Studio 2015\Projects\v8Application2\Debug\v8Application2.exe : fatal error LNK1120: 18개의 확인할 수 없는 외부 참조입니다.
========== 빌드: 성공 0, 실패 1, 최신 0, 생략 0 ==========

33개의 오류에서 27개로 6개가 줄었지만 오류가 남아있네요 ㅠ

아! 그리고 어제 v8 공홈 참조 내용을 번역해서 pdf로 만드신 분께 질문 메일을 보내서 답변을 받아 봤는데요.
답변 내용입니다.

『createDefaultPlatform에서 헤더만 정의되어있고 구현채가 없는거는 해당 함수의 의미에서도 나타나지만 플랫폼에 의존되는 부분을 각각 구현하기 위해 되어 있는 부분인데

예를 들어 실제 구현채는 platform-win32.cc 또는 platform-android.cc로 분리 되어 있습니다. gyp로 프로젝트 생성하실 때 옵션 설정을 잘 하셨을거라 생각 되는데 제 사견으로는 여기 어딘가에서 미스가 있거나 한것으로 생각됩니다. 실제 빌드 되는 파일의 목록을 확인 해보시구 윈도우 플랫폼 코드가 빌드 되었는지 확인해 봐야 할거 같습니다. 』

구현채가 platform-win32.cc 같이 생성이 된다고 하는데 저는 default-platform.cc가 있는거로 봐서 gyp로 생성할 때 뭔가 다른 추가옵션을 줘야 하는건가 하는 생각이 들구요.

라스코니 님게서도 용도가 다르게 생성된게 아닌지 물어 보셨는데 그 문제 일수도 있지 않을까요?

제가 솔루션 파일 생성할때는 그냥 윈도우 cmd 창에서 set GYP_MSVSVERSION=2015 와 set GYP_GENERATORS=msvs를 설정하고 python gypfiles\gyp_v8 -Dcomponent=shared_library로 생성을 했거든요. 구글링과 인터넷 검색 시 이 세팅 외에는 -Dtarget_arch=ia32 라는 모드 변경 부분만 봤었는데 다른 부분이 있는 걸까요?

==================================================================================
chromium 홈페이지를 뒤져보니 gyp build paramiter에 os부분이 있어서 솔루션 생성시 옵션에 -Dos=windows를 추가하고 재생성 해봤습니다. 그리고 빌드를 하니 lib가 30개가 됐네요 exp파일도 12개 있습니다..
그 lib를 c++프로젝트에 넣고 돌리면 -> OTL 똑같습니다. ㅠㅠ

혹시나 -Dos=win32로도 만들어 지나 했더니 적용이 된건지 무시된건지 모르지만 또 정상적으로 생성이 됩니다.
all.sln 파일을 빌드 해보면 lib가 30개 나오고 exp파일도 12개 생기는 건 같네요.
그 lib를 c++프로젝트에 넣고 돌리면 -> OTL 경고는 1개 줄지만 똑같습니다. ㅠㅠ

kenwoo87의 이미지

문제는 lib 파일이 문제였네요 몇 개가 추가로 더 들어갔어야 되는데 단순히 v8.lib, v8_base.lib, nosnapshot.lib, v8_libplatform.lib 정도만 들어가는 줄 착각해서 그런 거 같습니다. 그리고 bin 파일이 들어가는데 이런 부분에 대한 설명은 따로 없어서 한참 헤맸던 것 같네요. @_@. 일단 되기는 되는데 정적 라이브러리로 만든 게 왜 dll이 필요한지도 모르겠고 일단 좀 더 파보겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.