• ベストアンサー

error C2664

現在VisualStudio C++ 6.0にてプログラムを組んでいるのですが、以下のようなエラーが出ます。 型の変換ができていないであろうことはわかるのですが、解決方法がわかりません。 どのような解決方法があるのでしょうか? よろしくお願いします。 error C2664: 'strcat' : 1 番目の引数を 'unsigned char [256]' から 'char *' に変換できません。 (新しい機能 ; ヘルプを参照) 指示された型は関連がありません; 変換には reinterpret_cast、 C スタイル キャストまたは関数スタイルのキャストが必要です。

質問者が選んだベストアンサー

  • ベストアンサー
  • noocyte
  • ベストアンサー率58% (171/291)
回答No.2

たぶんコンパイラの設定で「char 型を規定で unsigned」にしているんでしょう. まさかわざわざ unsigned char buf[256]; と書いているとも思えませんので. VC6 は持ってないので知りませんが,.NET 2003 でのやり方を書けば, 「プロジェクト」→「プロパティ」→「C/C++」 →「言語」→「char 型を規定で unsigned」→「いいえ」 VC6 でも同様の設定をすれば OK のはず.

その他の回答 (2)

  • MrBan
  • ベストアンサー率53% (331/615)
回答No.3

UCHARにしてたり、サンプルがunsignedだったりとかはありえそうですが。 ソース次第では、#2の方の方法で通ると思いますが、 それで問題がないかは、やはりソースを提示してもらわないとなんとも。

  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.1

問題の箇所のソースを提示してください。 stacat((char*)aaa,bbb);ようにキャストしただけではダメですか。

関連するQ&A

  • エラー C2664

    プログラミングの初心者です. 「error C2664: 'fclose' : 1 番目の引数を 'const char [14]' から 'FILE *' に変換できません。 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」 以上のエラー文がでてきて, http://tipstips.client.jp/ugopen/UfuncErrorW32.html ↑の操作をしても消えませんでした. エラー文の出てきたのは fclose("sikisaizu.csv"); というところです. よければヒント等を教えていただけると嬉しく思います. よろしくお願い致します.

  • 意味がわからないエラーがあります【14歳からはじめるC言語ゲームプログラミング】

    14歳からはじめるC言語ゲームプログラミング(横スクロールアクションゲーム)をやっていて、第5章で意味がわからないエラーがでました・・・ error C2664: 'MessageBoxW' : 2 番目の引数を 'const char [25]' から 'LPCWSTR' に変換できません。 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 というもので、chap4.cppの23行目と67行目でひっかかりました。 どうすれば解決できますでしょうか。 C言語に詳しい方、よろしくおねがいします。

  • VC++2008のC2664エラー

    VisualStdio2008で、現在手を出しているARToolKitを利用したプログラムです。 卒研に使うもので以前別の方が作ったプログラムなのですが、C2664というエラーが発生し、その解決方法がよくわからないので質問します。 以下が、該当する部分のソースです。また、エラーの文章もそのままあげています。 左に書いてあるのは行数です。 「*cparam」が「char **からARParam *へ変換できない」と言うものなのですがどうすれば解決できるでしょうか。 一応、いくつかのサイトも見てみましたがよくわからなかったので質問しました。 解決方法を教えてくださるとありがたいです。 int xsize; int ysize; char *vconf = "Data/WDM_camera_flipV.xml"; //ビデオデバイスの設定ファイル char *cparam = "Data/camera_para.dat"; //カメラパラメータファイル //初期化関数 static void init(void) { ARParam wparam; int i; /*ビデオデバイス設定*/ if(arVideoOpen(vconf) < 0) exit(0); /*ウィンドウサイズ取得*/ if(arVideoInqSize(&xsize,&ysize) < 0) exit(0); printf("Image size(x,y) = (%d,%d)\n",xsize,ysize); /*カメラパラメータ読み込み*/ if (arParamLoad(cparam,1,&wparam) < 0){ printf("Camera parameter load error !!\n"); exit(0); } /*カメラパラメータ初期化*/ 95 arParamChangeSize(&wparam,xsize,ysize,&cparam); 96 arInitCparam(&cparam); 97 printf("*** Camera Parameter ***\n"); 98 arParamDisp(&cparam); /*パターンファイル読み込み*/ for (i = 0; i < OBJ_NUM; i++){ if( (object[i].patt_id = arLoadPatt(object[i].patt)) < 0){ printf("pattern load error : %s\n", object[i].patt); exit(0); } } /*gsubライブラリ初期化*/ 109 argInit(&cparam, 1.0, 0, 2, 1, 0); mqoInit(); } 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(95) : error C2664: 'arParamChangeSize' : 4 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(96) : error C2664: 'arInitCparam' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(98) : error C2664: 'arParamDisp' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>f:\卒検\プログラムセット\カメラキャリブレーション\kakotest\kakotest\kakotest.cpp(109) : error C2664: 'argInit' : 1 番目の引数を 'char **' から 'ARParam *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。

  • SDKでのエラーなのですが。

    はじめまして。 SDKの勉強で猫でもわかる~のHPの第37章のサンプルを実行したのですが、 --------------------構成: 037 - Win32 Debug-------------------- コンパイル中... main.cpp D:\SDK\037\main.cpp(230) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 D:\SDK\037\main.cpp(248) : error C2664: 'CallWindowProcA' : 1 番目の引数を 'int (__stdcall *)(void)' から 'long (__stdcall *)(struct HWND__ *,unsigned int,unsigned int,long)' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 cl.exe の実行エラー 037.exe - エラー 2、警告 0 というようなエラーが出てしまいました。 このエラーを回避するにはどのようにすればいいのでしょうか?

  • Visual C++

    超ド素人でVisual C++の入門本を開けたばかりなのですが、いきなりつまずいてしまいました。 本に書いてあるプログラムをコピーしてビルドしてもエラーが出ます。 「error C2664: 'lstrcpyW' : 1 番目の引数を 'char [80]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。」 と出ます。書籍はVC++5.0/6.0対応で、使っているのはVisual Studio2005のVC++です。バージョンが違うのでエラーが出るのでしょうか?

  • VC++にてCString型のフルパスをfopenする

    VC++(VisualStudio2005)にてCString型のフルパスをfopenしたいと思っています。 他ページでは char *name = new char[filepass.GetLength()+1]; strcpy( name, filepass ); でstrcpyでCstring→charへ変換できるとあったのですが、 'strcpy' : 2 番目の引数を 'CString' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 1> この変換を実行可能なユーザー定義変換演算子がないか、または演算子を呼び出せません。 というエラーをはいて実行できませんでした。 lstrcpy(name, filepass)でも 1 番目の引数を 'char [100]' から 'LPWSTR' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 となりました。 何か良い方法をご存じないですか? char型に変換できなくとも、結果的にfopenを使ってファイルオープンできれば良いです。

  • C言語のキャストについて

    お世話になります。 CRC-16の計算プログラムをC言語でつくりました。 例えば・・・1F 08 00 00 12 34 なら“1F0800001234”と入力すると【EEC2】と表示するプログラムです。 ただ・・・.Net SDKでコンパイルするとできたのですが、Visual C++2008でコンパイルするとエラーが出てしまいます。 (48) : error C2664: 'strlen' : 1 番目の引数を 'unsigned char [256]' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 (52) : error C2664: 'strtol' : 1 番目の引数を 'unsigned char [3]' から 'const char *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 型変換が必要ってことまではわかったのですが・・・必要なのはわかって行き詰まり状態です。。。 どのようしたらよいのでしょうか?ご教授をよろしくお願いします。 ソースは以下の通りです。 #include "stdafx.h" #include <stdio.h> #include <string.h> #include <stdlib.h> unsigned short crc_cal(unsigned short lng, unsigned char *str) { unsigned short crc, i, j, t; t= 0x0000; crc = 0xffff; for (i = 0; i < lng ; i++) { crc ^= (unsigned short) str[i]; t = (unsigned short) str[i]; for (j = 1; j <= 8; j++) { if (crc & 1) { // carry bit on crc = crc >> 1; crc ^= 0xa001; } else { // carry bit off crc = crc >> 1; } } } return crc; } int main(void) { unsigned char str[256],data[128],hexstr[3]; unsigned short crc,CRC,len; while(1) { printf("Please input key (HEX)\n"); scanf("%255s",str); hexstr[2]='\0'; for(len=0; len<(strlen(str)/2) ;len++) { hexstr[0]=str[len*2]; hexstr[1]=str[len*2+1]; data[len]=(unsigned char)strtol(hexstr, NULL, 16); } crc = crc_cal(len,data); CRC = (crc>>8) | (crc<<8); printf("\nCRC16 = %04X\n\n", CRC); } return 0; }

  • Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express Editionでerror C2664発生

    お世話になります。 Visual Studio 6.0でビルド可能だったものがVisual C++ 2008 Express EditionでエラーC2664を出してしまい解決法を模索しております。 同様のトラブルを調べてみましたが、例えば「文字セット」を「マルチ バイト文字セットを使用する」にしても改善されませんでした。 void time_sobi(int sobi_time){ long time1,time2 ; time(&time1); time2=time1; while(labs(time1-time2)<sobi_time){ time(&time1); } } 上述の部分で: s\jun\デスクトップ\hight\hight.cpp(112) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 1>c:\documents and settings\jun\デスクトップ\hight\hight.cpp(115) : error C2664: 'time' : 1 番目の引数を 'long *' から 'time_t *' に変換できません。(新しい機能 ; ヘルプを参照) 1> 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 とメッセージが出て、該当する部分はそれぞれ3,6行目のtime(&time1);です。 ご教示くださる方いらっしゃいましたら宜しくお願い致します。

  • VS2005 UDX

    VisualStudio2005を購入し、ゲーム開発に優れていると聞くUDXを使おうと思い、早速セットアップに書いてある説明通りに手を進めました。 しかし何度やってもエラーが多発します。内容は error C2660: 'fopen_s' : 関数に 2 個の引数を指定できません。 error C2664: 'Debug' : 1 番目の引数を 'const char [16]' から 'LPCTSTR' に変換できません。(新しい機能 ; ヘルプを参照) 指示された型は関連がありません。変換には reinterpret_cast、C スタイル キャストまたは関数スタイルのキャストが必要です。 でした。これは一部で、似たようなエラーが数十件もありました。 自身でも何とかしようと思って書き直した場所は #include "stdafx.h" をはじめに追加した所と、古い形式として宣言されました。と言われたので fopenをfopen_sに直した所です。 いろいろと試しましたが、私が手を加えると悪化する一方なのでで質問させていただきました。 こんな私ですが、どなたかVisualStudio2005やUDXに詳しい方がおられましたらよろしくお願い致します。

  • CStringについて

    CStringにおいてFindではエラーが出ないのに、ReverseFindだとエラーがでます。 error C2664: 'ReverseFind' : 1 番目の引数を 'char [4]' から 'char' に変換できません。 (新しい機能 ; ヘルプを参照) この変換には reinterpret_cast, C スタイル キャストまたは関数スタイルのキャストが必要です。 キャストするとエラーは出ませんが文字列の検索は失敗してしまいます。 Findはまったく問題無いのにどうしてこのようなことが起きるのでしょう? どう対処すれば良いか教えてください。 CString ddd; ・ ・ nn=ddd.Find("DOW");     ←エラーなし nn=ddd.ReverseFind("DOW"); ←エラーあり 環境はWIN98 VC++6.0 MFCです。

専門家に質問してみよう