• 締切済み

C言語 コンパイルエラー LNK1136

以前http://oshiete1.goo.ne.jp/qa4632602.htmlで質問して、ライブラリの設定ができていないのではということを指摘され、ライブラリの設定をしましたが、 「LNK1136:ファイルが無効であるか、または壊れています。」 というコンパイルエラーがでました。 自分で、プロジェクト>プロパティ>構成プロパティ>リンク>入力>追加の依存ファイルにライブラリを入れました。 やり方が違うのでしょうか? 本当に壊れているのかと思い、ライブラリファイルを入れなおしてみましたが変わりませんでした。 環境:visual studio 2005、WindosVista Ultimate 32bit

みんなの回答

  • php504
  • ベストアンサー率42% (926/2160)
回答No.4

前の質問で visa.h をインクルードしてるようですがそれなら追加するのは visa32.lib ではないでしょうか

xyz203
質問者

お礼

解答ありがとうございます。 visa32.libをいれると、「_StringLength関数が _main で参照されました」というエラーが出たのでライブラリファイルが違うのかなと思ったしだいです。

全文を見る
すると、全ての回答が全文表示されます。
  • chie65535
  • ベストアンサー率43% (8536/19409)
回答No.3

>メーカーからダウンロードしたファイルのlibフォルダに入っていた物を片っ端から追加の依存ファイルに入れました。 http://msdn.microsoft.com/ja-jp/library/6azkch2c(VS.80).aspx は自動翻訳なので「日本語が変」ですが、このページが言いたい事は 「追加の依存ファイルに、.libファイル以外の、リンカがライブラリファイルとして認識出来ないファイルを指定した場合にも発生します」 と言う事。 つまり「libフォルダに入っていた物を片っ端から追加の依存ファイルに入れた」のが原因。 libフォルダには「#includeに使う.hファイルや説明書などの.txtファイルなど、.libファイル以外の、リンカがライブラリファイルとして認識出来ないファイル」も含まれてるから、片っ端から追加の依存ファイルに入れてはいけない。 追加で入れたのを全部「無し」にして「拡張子が.libのファイルだけ」を入れ直しましょう。

xyz203
質問者

お礼

回答ありがとうございます。 .libのものを入れてもうまく動きませんでした。 メーカーに聞いたところサンプルプログラムの変数宣言が違ったようです。

全文を見る
すると、全ての回答が全文表示されます。
  • php504
  • ベストアンサー率42% (926/2160)
回答No.2

追加の依存ファイルに入れたファイル名はなんでしょうか 追加されたファイルがライブラリではないようです

xyz203
質問者

お礼

回答ありがとうございます。 ファイル名はbcsicl32.libです。 メーカーからダウンロードしたファイルのlibフォルダに入っていた物を片っ端から追加の依存ファイルに入れました。

全文を見る
すると、全ての回答が全文表示されます。
  • hisappy
  • ベストアンサー率46% (184/392)
回答No.1

エラーの内容と環境からの推測です。 まず、エラーの内容が言っているのは 「入力ファイルのヘッダーが破損している。」とか 「追加しているファイルの依存関係がおかしい」 というようなことらしいです。 http://msdn.microsoft.com/ja-jp/library/6azkch2c(VS.80).aspx その内容から推測すると、 ・「追加の依存ファイル」への追加した順序がおかしい。 ・「追加の依存ファイル」に追加したファイルがおかしい。 つまり、コンパイラ側は「拡張子が.oのオブジェクトファイル」が欲しいのに ソースファイル(.c)やライブラリファイル(.lib)などの 間違ったファイルが突っ込まれていたり、 必要なファイルが間違った場所に格納されている。 あるいは、最初にエラーとなった状態のままとなっていて ・入れ直した操作が再コンパイルに反映されていない。 ということが考えられます。 なので、ライブラリファイル、オブジェクトファイルなどの格納場所を確認し、 完全ビルド(っていうのでしょうか?)を行ってみるとよいのではないでしょうか。

xyz203
質問者

お礼

回答ありがとうございます。 >>間違ったファイルが突っ込まれていたり メーカからダウンロードしたファイルのlibフォルダのものを入れましたがこれが違うということですね。もう一度調べてみます。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • C言語のコンパイルができなくて困っています

    私は、学校でC言語の学習をしているのですが、以下のエラーが出てコンパイルできなくなってしまいました。 cl : コマンド ライン error D8021 : 数値型引数 '/wd499■6'は無効です。 ネットで調べても原因が分からず、友人などから「設定ファイルの数値がおかしいんじゃないか」と教えてもらい、設定ファイルも見てみましたが、書き変えた形跡もないので問題を解決できずにいます。 使用してるソフトはVisual studio 2008です。 初めての質問でつたない文章ですが、解決方法をご存知の方がいらっしゃいましたら教えていただけないでしょうか?

  • error LNK2001: 外部シンボル "_main" は未解決です

    VisualC++6.0で、新規作成→win32 Dinamic-Link Libraryでプロジェクト を作成し、dllファイルを作っています。 今までは、上手くコンパイル出来て、dllを作れていました。 友人の作ったライブラリにリンクして、ソースファイルで そのライブラリの関数を使って、コンパイルすると、 LIBC.lib(crt0.obj) : error LNK2001: 外部シンボル "_main" は未解決です。 というエラーが出て困っています。 今、プロジェクトの設定→リンク→アウトプットの エントリポイントシンボルはDllEntryPoint@12となっています。 どうしたら良いでしょうか? どなたかご教授くださると助かります。 ちなみに、ライブラリの関数をコメントにすると、コンパイル出来ます。

  • C++ の LNK2001エラー

    「sample.obj : error LNK2001: 外部シンボル ""void * __cdecl SetupDiGetClassDevsW(struct _GUID *,wchar_t const *,struct HWND__ *,unsigned long)" (?SetupDiGetClassDevsW@@$$FYAPAXPAU_GUID@@PB_WPAUHWND__@@K@Z)" は未解決です。」というエラーメッセージが出ます。  ソース中に extern "C" { #include "hidsdi.h" #include <setupapi.h> } #pragma comment(lib, "setupapi.lib") #pragma comment(lib, "hid.lib")  の記述をしています。  Visual C++ 2005 Express Edition で [プロジェクト] -> [プロパティ] -> [構成プロパティ] -> [リンカ] -> [追加のライブラリ] のところにディレクトリ設定も行っています。  どのようにしたら解決できるのでしょうか。

  • C++でのエラーについて

    Microsoft Visual C++ 2010 Express において、以下のファイル (http://1st.geocities.jp/shift486909/program/Bernoulli/func.cpp) をコンパイルしようとすると、 1>------ ビルド開始: プロジェクト: eter, 構成: Debug Win32 ------ 1>LINK : error LNK2001: 外部シンボル "_WinMainCRTStartup" は未解決です。 1>c:\users\garnet\documents\visual studio 2010\Projects\eter\Debug\eter.exe : fatal error LNK1120: 外部参照 1 が未解決です。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== というようなエラーが出てコンパイルできません。 何が原因なのでしょうか?

  • FindFirstFileについて教えてください。

    Visual Studio C++ 2010 Expressを利用して、C言語のプログラムを作成しています。 その中でFindFirstFileを使っています。 Visual Studio上でWin32コンソールアプリのプロジェクトを作成して、このプログラムをコンパイルしました。 プロジェクトのプロパティは変更していません。 コンパイルしたものを実行すると戻り値としてINVALID_HANDLE_VALUEが返ってきて、ファイルのリストを取得できませんでした。 一方で、コマンドプロンプト上でMakefileを作成し、同じソースをコンパイルした場合は、ファイルのリストを正常に取得することが出来ます。 従いまして、おそらくプログラムは問題ないと思います。 Visual Studioのプロジェクトで、何かプロパティの設定が必要でしょうか? 実行環境は、Windows7 64-bitです。 何かご存知の方いらっしゃいましたら、教えて頂けますか?

  • fatal error LNK1112

    ビルドをすると以下のようなエラーがでてきてしまいます。 「fatal error LNK1112: モジュールのコンピュータの種類 'X86' は対象コンピュータの種類 'x64' と競合しています。」 いろいろ検索してみたのですが、解決方法がわかりません。 因みに、64bitでコンパイルしたいです。 力になってもらえるとうれしいです、よろしくお願いします。 既に試した方法を書きます。 1.ttp://triple-tiara.blog.ocn.ne.jp/memo/2010/03/visualstudio200.html   に書かれている、「vcvarsamd64.bat」を叩いてビルド。   残念ながら効果なしでした。 2.様々な所に書かれている「対象コンピュータを MachineX86 (/MACHINE:X86) に変更」。   「fatal error LNK1112: モジュールのコンピュータの種類 'x64' は対象コンピュータの種類 'X86' と競合しています。」   と、新しいエラーがでてきます。   どちらのエラーも出るということは、32bitと64bitの両方を持っているのかな・・・ 【環境】下記の通りです Windows7 64bit Microsoft Visual Studio 2008  言語は「C++」と「CUDA」

  • Oracle10g→11gコンパイル方法

    元々WindowsXP上のOracle10g+VisualStudio6.0 C/C++で開発したアプリを WindowsServer2008R2とWindows7上のOracle11g(64bit,32bit)+VisualStudio2008に アップグレードしようとしています。 ですが、コンパイル時にエラー 「LNK2019:未解決の外部シンボル _sqlcxtが・・・」 というエラーが出てコンパイルできません。 コンパイル環境としては参照する11gのLib,Includeのフォルダの定義は入れてあります。   ツール-オプションの実行可能ファイル、インクルードファイル、ライブラリファイルに   (ORA_HOME)\BINや\pricomp\publicや\LIBや\precomp\LIBなどを設定済み また、プロジェクトのプロパティの参照ライブラリも 「oraSQL10.LIB」→「oraSQL11.LIB」に変更しました。 あと、何が足りないのでしょうか? ご教授願います。

  • Fortranについて,fatal error LNK1181

    Fortranをインストールしてプログラムをコンパイルしようとすると,以下のエラーが出ます. LINK : fatal error LNK1181: cannot open input file "C:\DOCUME~1\dfor.lib" 正常に作動させるにはどうしたらいいでしょうか.何か足らないものがあるのでしょうか.以下のフォルダに, インストールCDに入っているLIBファイルをすべてコピペしてみたのですが,変わりなしです. C:\Program Files\Microsoft Visual Studio\DF98\LIB OSはXP,今回インストールをしたFortran及びプログラム作成をしたFortranは,共にVisual Fortran 6.0です.何か打開策があれば助言お願いします.

  • LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。

    使用ソフトはvisual c++.netで DIRECTXの雑誌に付録していたファイルを使って、 ビルドしてみたのですが、 LINK : fatal error LNK1104: コンパイラは、ファイル 'DxErr9.lib' を開くことができません。 っと表示され、EXEファイルが生成されませんでした。 ライブラリファイルにちゃんと登録して、 リンカの依存する関係にも登録したのになぜ? ちなみにライブラリファイルにはちゃんと dxerr9.libはありました。

  • C言語のPathFileExistsについて

    visual studio 2010、C言語でPathFileExistsを使って ファイル有無のチェックをしようと試みましたが、 コンパイルエラーになってしまいました。 環境はwindowsXP、SP3です。 参考にしたいくつかのサイトでは、visual studio 2010ではPathFileExistsを使って ファイル有無をチェックできると書いてあったのですが、 visual studio 2010でもC言語だとPathFileExistsは使えないのでしょうか? TEST.C #include <stdio.h> #include <shlwapi.h> int main() {   char path[128];   sprintf( path, "c:\\tmp.txt" );   if ( PathFileExists(path) ){     printf("ファイル有\n");   }   else{     printf("ファイル無\n");   }   return 0; } TEST.OBJ : error LNK2019: 未解決の外部シンボル __imp__PathFileExistsA@4 が関数 _ main で参照されました。 TEST.EXE : fatal error LNK1120: 外部参照 1 が未解決です。 NMAKE : fatal error U1077: '"C:\Program Files\Microsoft Visual Studio 10.0\VC\BI N\link.exe"' : リターン コード '0x460' Stop.