目前心得:
http://msdn2.microsoft.com/zh-tw/library/ms235624(VS.80).aspx
VC2005的應用程式需要透過manifest來使用某些library(MFC,ATL,CRT)
這些dll會放在WinSxS folder中
要使用必須要用manifest來指定需要什麼dll
執行時會透過manifest到WinSxS folder中去找對應版本的dll來使用
如果不用manifest直接把dll丟到binary的folder就會造成錯誤 (R6034)
manifest可以embed在binary中 也可以寫成external file
之前碰到的問題:
一開始是顯示找不到msvcr80.dll , 代表缺少這個dll
所以要修改manifest檔:
在project>properties>configuration properties>linker>manifest file>additional manifest dependencies中加入
type='win32' name='Microsoft.VC80.CRT' version='8.0.50608.0'processorArchitecture='x86' publicKeyToken='1fc8b3b9a1e18e3b'
(version要自己到 WinSxSfolder去看 選擇其中一個版本)
這樣就會幫我們在manifest file中加入這段 接下來再build一次就可以執行了
2008年1月21日 星期一
2008年1月11日 星期五
VC6 to VC2005 問題2
部分錯誤訊息如下:
c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2365: 'operator new' : redefinition; previous definition was 'function'c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2491: 'new' : definition of dllimport data not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2078: too many initializersc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2143: syntax error : missing ';' before '('c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2226: syntax error : unexpected type 'size_t'c:\program files\microsoft visual studio 8\vc\include\xdebug(33) : error C2059: syntax error : ')'c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : warning C4229: anachronism used : modifiers on data are ignoredc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2365: 'operator new' : redefinition; previous definition was 'function'c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2491: 'new' : definition of dllimport data not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2078: too many initializersc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2143: syntax error : missing ';' before '['c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C3409: empty attribute block is not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2226: syntax error : unexpected type 'size_t'c:\program files\microsoft visual studio 8\vc\include\xlocale(138) : error C2059: syntax error : 'string'c:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2091: function returns functionc:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2802: static member 'operator new' has no formal parametersc:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2333: 'std::locale::facet::operator new' : error in function declaration; skipping function bodyc:\program files\microsoft visual studio 8\vc\include\xlocale(144) : error C2059: syntax error : 'string' .........
忘記在那邊看到的解法, 把project中的#define new DEBUG_NEW這行拿掉就行
c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2365: 'operator new' : redefinition; previous definition was 'function'c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2491: 'new' : definition of dllimport data not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2078: too many initializersc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castc:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2143: syntax error : missing ';' before '('c:\program files\microsoft visual studio 8\vc\include\xdebug(32) : error C2226: syntax error : unexpected type 'size_t'c:\program files\microsoft visual studio 8\vc\include\xdebug(33) : error C2059: syntax error : ')'c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : warning C4229: anachronism used : modifiers on data are ignoredc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2365: 'operator new' : redefinition; previous definition was 'function'c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2491: 'new' : definition of dllimport data not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2078: too many initializersc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2440: 'initializing' : cannot convert from 'int' to 'void *' Conversion from integral type to pointer type requires reinterpret_cast, C-style cast or function-style castc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2143: syntax error : missing ';' before '['c:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C3409: empty attribute block is not allowedc:\program files\microsoft visual studio 8\vc\include\xdebug(36) : error C2226: syntax error : unexpected type 'size_t'c:\program files\microsoft visual studio 8\vc\include\xlocale(138) : error C2059: syntax error : 'string'c:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2091: function returns functionc:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2802: static member 'operator new' has no formal parametersc:\program files\microsoft visual studio 8\vc\include\xlocale(139) : error C2333: 'std::locale::facet::operator new' : error in function declaration; skipping function bodyc:\program files\microsoft visual studio 8\vc\include\xlocale(144) : error C2059: syntax error : 'string' .........
忘記在那邊看到的解法, 把project中的#define new DEBUG_NEW這行拿掉就行
訂閱:
文章 (Atom)
