解決 C2664 “char *strcpy(char *,const char *)”: 無法將引數 2 從“CString”轉換為“const char *”
在使用舊工程中的函式時, 在VS 2017上編譯出現如上問題, 但是該函式在之前的版本上可以正常編譯, 怎麼會出現這問題呢?難道不向前相容, 不應該, 一定是哪裡沒設定好, 在找資料查詢之後, 還是找到了, 記錄下, 方便大家也方便自己.
1. 編譯錯誤顯示圖
根據錯誤提示, 嘗試修改字符集, 應該可以解決.
2. 修改字符集, 採用多位元組字符集
3. 重新編譯
重新編譯, 還是出錯, 但已經不是剛才的錯誤了, 說是函式不安全, 這下就有眉目了, 使用巨集告訴編譯器不必理會即可.
4. 在前處理器定義中新增巨集
5. 設定完之後, 重新編譯工程, 則不會再報錯, 編譯通過
最後, 我再VS 2017之前的版本上又重新試了下工程, 發現之前的版本只需要修改下字符集即可, 而在VS 2017上必須要在前處理器中新增巨集定義才可以, 可以得出, VS 2017對程式碼的安全性提高了很多, 底層又做了很多開關, 限制. 總體來說, 還是很人性化的.
相關推薦
解決 C2664 “char *strcpy(char *,const char *)”: 無法將引數 2 從“CString”轉換為“const char *”
在使用舊工程中的函式時, 在VS 2017上編譯出現如上問題, 但是該函式在之前的版本上可以正常編譯, 怎麼會出現這問題呢?難道不向前相容, 不應該, 一定是哪裡沒設定好, 在找資料查詢之後, 還是找到了, 記錄下, 方便大家也方便自己. 1. 編譯錯誤顯示圖
inet_addr”: 不能將引數 1 從“CString”轉換為“const char *”1>
CString ipaddress; ipaddress = "192.168.39.207"; DWORD m_dwPuIp; m_dwPuIp = inet_addr(ipaddress);有一個錯誤:“inet_addr”: 不能將引數 1 從“CString”轉換為
【VC++】不能將引數 1 從“_TCHAR”轉換為“const char* 問題解決
原因:2005預設的"使用 Unicode 字符集",解決:在你建立的解決方案的工程檔案的屬性看到選"配置屬性"的"字符集"請選擇"使用多位元組字符集"就可以了。 2005開啟6.0的檔案時候不會出現的這樣的錯誤,是因為編譯環境在轉換過程中進行了轉換. 這個解決辦法在vs 2008也適用。
error C2440: “=”: 無法從“CString”轉換為“const char *”
what a fucking problem!!!! 最簡單的方法是到專案屬性裡面去改一下字符集,可是噁心的是我的程式要是改了字符集的話,那麼噁心的問題又多了,都是字元間的轉換問題,google,baidu搜了有一個小時了,尼瑪還是沒有解決,先寫到這裡,我再接著去嘗試。2
無法將引數1從“const char [6]”轉換為“char *”的解決方法
有一些C++程式在VS2017上執行會有一些錯誤,而在vc6.0中卻能執行出來。接下來的一個程式就是我在vs2017上執行出現錯誤,而在vc6.0上執行出來。但我已經通過分析vs2017上錯誤來源解決了該問題,並以此作為分享。例項碼:#include<i
C++編譯出現 error C2664: 不能將引數 2 從“const char [5]”轉換為“LPCTSTR”解決辦法。
原因:編譯程式的時候出現這樣的錯誤,原因是在新建MFC專案的時候,設定字符集Unicode的屬性 解決方法一: 在VS的解決方案管理器視窗內,右擊你的專案“專案”,然後選“屬性”(最後一項),再點“配
C++ 錯誤提示:無法將引數1從const char [8] 轉換為char *
#include <iostream> using namespace std; void test(char * p) { cout << p << endl; } int main(void) { test("geerniya")
不能將引數 2 從“const char [7]”轉換為“LPCTSTR”問題解決辦法
如下語句: ctrlList.InsertColumn(0, "屬性頁", LVCFMT_LEFT, 300, 0); 使用VS2005編譯時提示如下錯誤資訊: error C2664: “int CListCtrl::InsertColumn(int,LPCTSTR,in
CString轉換為const char*
編譯器 vc++ bsp 但是 new ++ str () 報錯 在VC++6.0中,CString可以通過強制轉換,轉換成char*,如: (char*)(LPCTSTR)str,但是在VS2010及更高版本中,這樣強制轉換的後果就是char只能接受CString的第一個
VS2008中關於“MessageBoxW”: 不能將引數 2 從“char [20]”轉換為“LPCWSTR”的錯誤解決
問題:1>d:\users\yangtse\documents\visual studio 2008\projects\winmain\winmain\54.cpp(27) : error C2440: “=”: 無法從“const char [14]”轉換為“LPCW
MFC 手動選擇文件夾並將文件夾地址從CString轉換為char[]數組
col end ref sizeof omid itemid pid flag span 1 BROWSEINFO bi; 2 ZeroMemory(&bi, sizeof(BROWSEINFO)); 3 bi.hwndOwner =
牛客網——const二級指標報錯: 無法從“int **”轉換為“const int **”
喵哥在牛客網遇到這麼一題選擇題: class A { }; void f(const A** p) {} void g(const A * const *p) {} void k(const A*&p) {} int main() { const A * ca = new A();
TypeError: Error #1034: 強制轉換類型失敗:無法將 "" 轉換為 Array。
soft tom cdata rtc project pan urn provide component 1、錯誤描寫敘述 TypeError: Error #1034: 強制轉換類型失敗:無法將 "" 轉換為 Array。 at mx.charts.series:
NotSupportedException-無法將型別“System.DateTime”強制轉換為型別“System.Object”
幾張圖就可以說明一切 2015-03-29 21:54:09,206 [77] ERROR log - System.NotSupportedException: 無法將型別“System.DateTime”強制轉換為型別“System.Object”。LINQ to Entities 僅支
無法從CString 轉換為wchar_t* 型別
解決這個問題需要走兩步,第一是將CString轉換為const char*型別,第二部是將const char*轉換為wchar_t*型別。 程式碼如下: CString imagepath; int count = 0; c
無法從“CString”轉換為“LPCSTR”
float inputdata=atof(LPCSTR(GetInputString()));m_StackData.push(inputdata);while(!m_StackOprator.isEmpty()&&!m_StackData.isEmpty(
[error2664:Format(const wchar_t *,...)”:不能將引數 1 從“const char [4]”轉換為“const wchar_t *”]的解決
void scesjk::OnBnClickedButton1() //資料記錄 { // TODO: 在此新增控制元件通知處理程式程式碼 UpdateData(true); m_set.Open(); m_set.A
VC2008編譯出現error2664錯誤:Format(const wchar_t *,...)”:不能將引數 1 從“const char [4]”轉換為“const wchar_t *”
void scesjk::OnBnClickedButton1() //資料記錄 { // TODO: 在此新增控制元件通知處理程式程式碼 UpdateData(true); m_set.Open(); m_set.A
:MessageBoxW”: 不能將引數 1 從“const char [5]”轉換為“LPCTSTR” 1> 與指向的型別無關;轉換要求 reinterpret_cast、C 樣式
MessageBox("系統選單","提示",MB_OK|MB_ICONINFORMATION); MessageBox(_T("系統選單"),_T("提示"),MB_OK|MB_ICONINFORMATION); 或MessageBox(L"系統選單",L"提示"
MFC遇到的一個字符集問題:不能將引數1從“const char []”轉換為“LPCTSTR”
1、ANSI(即MBCS):為多位元組字符集,它是不定長表示世界文字的編碼方式。ANSI表示英文字母時就和ASCII一樣,但表示其他文字時就需要用多位元組。2、Unicode:用兩個位元組表示一個字元的編碼方式。比如字元'A'在ASCII下面用一個位元組表示,而在Unicode下面用兩個位元組表示,其中高位元