ラベル

blogger (2) C/C++ (23) CSS (1) DB (4) EXCEL (2) HTML (2) iphone (1) JavaScript (8) JScript (10) Lua (14) Objective-C (1) photoshop (1) PHP (10) Smarty (1) sqlite iphone (1) Tips (24) UML (1) VC++ (2) WSH (8) Xcode (2) コミュニケーション (2) コンパイルエラー (7) デザインパターン (4) テスト (3) マネージメント (1) 開発 (11) 心理学 (12) 生活 (2) 豆知識 (1) 遊び (1)
ラベル コンパイルエラー の投稿を表示しています。 すべての投稿を表示
ラベル コンパイルエラー の投稿を表示しています。 すべての投稿を表示

2010年7月18日日曜日

LIBCMT.libとMSVCRTD.libの競合

Luaのライブラリを利用しようとしたら出たエラーです。
ライブラリ(lib)がVC2005でコンパイルされていたので
VC2008のReleaseモードでコンパイルしたらでなくなりました。

LIBCMT.lib(_file.obj) : error LNK2005: ___iob_func は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0dat.obj) : error LNK2005: __amsg_exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0dat.obj) : error LNK2005: __initterm_e は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0dat.obj) : error LNK2005: _exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0dat.obj) : error LNK2005: __exit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0dat.obj) : error LNK2005: __cexit は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z は既に MSVCRTD.lib(cinitexe.obj) で定義されています。
LIBCMT.lib(tidtable.obj) : error LNK2005: __encode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(tidtable.obj) : error LNK2005: __decode_pointer は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(hooks.obj) : error LNK2005: "void __cdecl terminate(void)" (?terminate@@YAXXZ) は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup は既に MSVCRTD.lib(crtexe.obj) で定義されています。
LIBCMT.lib(errmode.obj) : error LNK2005: ___set_app_type は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(mlock.obj) : error LNK2005: __unlock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(mlock.obj) : error LNK2005: __lock は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(setlocal.obj) : error LNK2005: __configthreadlocale は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(dosmap.obj) : error LNK2005: __errno は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(lconv.obj) : error LNK2005: _localeconv は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(atox.obj) : error LNK2005: _atoi は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LIBCMT.lib(strtol.obj) : error LNK2005: _strtoul は既に MSVCRTD.lib(MSVCR90D.dll) で定義されています。
LINK : warning LNK4098: defaultlib 'MSVCRTD' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。
LINK : warning LNK4098: defaultlib 'LIBCMT' は他のライブラリの使用と競合しています。/NODEFAULTLIB:library を使用してください。

2010年5月24日月曜日

C++のエラー:error C2143: 構文エラー : ';' が 'namespace' の前にありません。

今日出たエラーです。
エラーの原因はクラス宣言の括弧の後ろにセミコロン「;」が抜けているだけだったのですが、エラーが出てる場所は全然違う場所で結構迷走しました。
#ifndef _MONSTER_H_
#define _MONSTER_H_

#include "Character.h"

class Monster : public Character
{
    //----------------------------------
    //  method
    //----------------------------------
    virtual const bool canMoveEach() {
        return true;
    }

    virtual void moveEach() {
    }
}//←ココ
#endif

2010年5月8日土曜日

C++のエラー:error C2360: 'hoge' の初期化が 'case' ラベルによって行われませんでした

今日出たエラーなんですけどswitch文のcase内で変数定義と初期化を同時に行おうとしたらでました。
コードは
switch (_type) {
    case 1:
        const int hoge = 1; // これがダメらしい
         break;
}
こんな感じです。昔同じエラーを経験したことがあったのですぐ解決しました。
解決方法はcaseに{}をつけるだけです。
switch (_type) {
    case 1: { // ←ココ
        const int hoge = 1; 
         break;
    } // ←ココ
}
修正するとこんなかんじです。
どうしてダメなのかはよく分りません、C言語の仕様なのかな?

2010年5月5日水曜日

C++のエラー:error C2065: 'NULL' : 定義されていない識別子です。

今日出たエラーです。
えっ?!って感じだったんですけど。
stdio.hに定義されていると言うことに今日気づきました。(汗

2010年5月4日火曜日

C++のエラー:C1083: include ファイルを開けません。

今日出たエラーです。結構はまってしまいました。
最初はincludeパスが未設定なのかなっておもったんですけど、ちがってまして、main.cppからこつこつ作って行くハメに。。。
で結局なにが問題だったのかといいますと。。。Monster.hがMonster..hになっていました。
こう書いてもわかりづらい!よーくみてください。ファイル拡張子の前のドットが2個有ったw

2010年5月2日日曜日

C++のエラー:invalid use of 'this' in non-member function

今日出たエラーです。
「メンバー関数じゃないからthisは使えないよ」ってことかな?
const string& getName()
{
 return this->m_name;
}
こんなソース(..cppファイル)だったんですけど、getName()の前にクラス名が抜けてるだけでした。

2010年5月1日土曜日

C++のコンパイルエラー:**** was not declared in this scope

今日、仕事中に出たエラーです。
「****はスコープ内に宣言されてないよっ」てことのようです。
実際、何が問題だったかというと、
****はクラス名だったのですが、スペルミスでした(汗。