Borlandbcc55とMYSQLのコンパイル時にlibmysql.libやmysqlclient.libのリンクについて

このQ&Aのポイント
  • Windows上で、borlandbcc55、mysqlを利用しいています。C/C++のソースでMYSQLの接続・切断・管理・MYSQLのレコードの値の取得・値の表示の仕方の基礎を教えてください。
  • includeはCのソースで#include "c:\mysql\include\mysql.h"と"c:\mysql\include\my_global.h"と記述するだけでOKです。
  • bcc55コンパイラ設定のcfgファイルにlibMysql.libやmysqlclient.libを追加設定する必要があります。また、coff2omfとilink32を使用してリンクする必要があります。
回答を見る
  • ベストアンサー

Borlandbcc55とMYSQLのコンパイル時にlibmysql.libやmysqlclient.libのリンクについて

Windows上で、borlandbcc55、mysqlを利用しいてます。 Windows上のborlandbcc55、mysqlで C/C++のソースでMYSQLの接続・切断・管理・MYSQLのレコードの値の取得・値の表示の仕方の基礎を教えてください。 これなら動きますよというソースを教えて頂けたら有難いです。 Borlandbcc55とmysqlの設定 my_global.hとmysql.hをincludeして、 コンパイル時にlibmysql.libやmysqlclient.libをリンクしてやればできそうなのですが includeは Cのソースで #include "c:\mysql\include\mysql.h" #include "c:\mysql\include\my_global.h" と記述するだけでOKなのでしょうか? MYSQLのLibmysql.libの設定の仕方及びコンパイル時にlibmysql.libやmysqlclient.libを リンクする方法がわかりません。 bcc55コンパイラ設定のcfgファイルにlibMysql.libやmysqlclient.libを 追加設定必要ですか? 必要ならどう記述すればいいのでしょうか? また違う仕方なのでしょうか? 全く理解できていません。 そのリファレンスをみてもわかりません。 1 coff2omf c:\mysql\lib\opt\libmysql.lib c:\borland\bcc55\lib\libmysql.lib 2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries 3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib これらの設定の仕方もわかりません。 設定に必要なのかどうかも理解できていません。 よろしくお願いします。

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

  • ベストアンサー
noname#9119
noname#9119
回答No.1

>includeは >Cのソースで >#include "c:\mysql\include\mysql.h" >#include "c:\mysql\include\my_global.h" >と記述するだけでOKなのでしょうか? ダメでしたか? cfgファイルにはよくつかうオプションを記述する。 普通は -I オプション、-L オプション。 どこにインクルードファイル、ライブラリファイルを置いてるかをコンパイラやリンカに教えるため。 よく使うのであれば追加すればいい。 >1 coff2omf c:\mysql\lib\opt\libmysql.lib c:\borland\bcc55\lib\libmysql.lib c:\mysql\lib\opt\libmysql.lib はVisual C++用のライブラリファイルなので、coff2omfで変換しないと使えない。 >2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries ? >3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib リンカを使ったことはありませんか?

sea_clear
質問者

補足

正直、回答が返ってくるか不安だったので,有難いですし感謝しています。有難うございます。 c:\mysql\lib\opt\libmysql.lib は Visual C++用のライブラリファイルなので、coff2omfで変換しないと使えない。 これはBcc55のMS-DOS上で bcc32 coff2omf c:\mysql\lib\opt\libmysql.lib とコマンドを打ち込めばいいのでしょうか? それともMYSQLの方ででしょうか? このコマンドでc:\mysql\lib\opt\libmysql.libをBorland bcc用に変換するのですね。 >2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries ? これは関係ないのでしょうか? >3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib リンカを使ったことはありませんか? 初心者ですのでリンカをコマンドを入力して使用したことはありません。これで、リンカを仕様している状態にしているのでしょうか? これもBcc55のMS-DOS上でコマンドを打ち込めばいいのでしょうか?それともMYSQLの方ででしょうか? 忙しいところ申し訳ございませんがよろしくお願いします。まだ後、少し質問がございますのでよろしければ回答お願いします。ありがとうございました。

その他の回答 (9)

noname#9119
noname#9119
回答No.10

>'off_t' の宣言が複数見つかった ソースの見えるところには 'off_t' は無いので、どこかのヘッダーファイルで重複されているはず。 cpp32 を使えば、インクルードファイルを展開した、プリプロセッサの処理結果が分かる。 結局は、9で書いたように #define USE_OLD_FUNCTIONS #include <mysql_com.h> #include <my_global.h> は要らないんじゃないかな? 参考になりそうなところ。 MySQLの関数リファレンス http://www.mmdb.net/m_kaneko/mysql/ MySQL日本公認代理店 http://www.mysql.jp/mysql/index.html

noname#9119
noname#9119
回答No.9

>詳しく理解しておりません。 C:\mysql\Docs\manual.txt を引きましょう。 >エラー ソースを見てもそのようなエラーは出なさそうですが。 Borland C++ Compiler 5.5.1 でコンパイルしましたが、そのようなエラーは出ませんでした。 MySQL 4.0.14b では #include <mysql_com.h> #include <my_global.h> は不要でした。(mysql_com.h は mysql.h の中でインクルードされる。my_global.h は不要になった?) #define USE_OLD_FUNCTIONS は #include <mysql.h> より下に書いては意味が無いし、今回は古い関数を使っていない。 #include <mysql_com.h> #include <my_global.h> と #define USE_OLD_FUNCTIONS を消したらとりあえずコンパイルは通りました。 >strcpy(g[2].blockstr + x * 2,"☆”,2); blockstr は2バイトの型の配列で、 blockstr[x] = 0x9981;//☆のSJIS ということですかね。

sea_clear
質問者

補足

遅れまして、回答ありがとうございます。 いろいろ読みましたが中々できません。 忙しいところ、真にすいませんが アドバイスよろしくお願いします。 mysql_init等を1つずつゆっくり質問させてください。 簡単に次のソースを書きコンパイルをすると 次のようなエラーがでてしまいます。 よろしくお願いします。 重複してしまう質問および回答がある場合、 真に申し訳ございません。 bccコンパイラとMYSQLで WIDOWSのODBC等を使用する必要でしょうか? #define USE_OLD_FUNCTIONS #include <windows.h> #include <stdio.h> #include <string.h> #include <mysql.h> #include <mysql_com.h> #include <my_global.h> int main() MYSQL mysql; mysql_init(&mysql); mysql_options(&mysql,MYSQL_READ_DEFAULT_GROUP,"your_prog_name"); if (!mysql_real_connect(&mysql,"MYSQLのアドレス","ユーザ名","パスワード","db名",0,NULL,0)) { fprintf(stderr, "Failed to connect to database: Error: %s\n",mysql_error(&mysql)); } fprintf("Failed to connect to database: 成功:\n"); return 0 } bcc32 -c stest.cpp stest.cpp: エラー E2238 c:\mysql\include\config-win.h 100: 'off_t' の宣言が複数見つかった エラー E2238 c:\mysql\include\config-win.h 105: 'size_t' の宣言が複数見つかった エラー E2141 stest.cpp 16: 宣言の構文エラー エラー E2303 stest.cpp 17: 型名が必要 エラー E2356 stest.cpp 17: '__stdcall mysql_init(st_mysql *)' の再宣言で型が一致 していない エラー E2344 c:\mysql\include\mysql.h 213: 一つ前の '__stdcall mysql_init(st_mys ql *)' の定義位置 エラー E2063 stest.cpp 17: 不正な初期化 エラー E2293 stest.cpp 17: ) が必要 エラー E2303 stest.cpp 18: 型名が必要 エラー E2356 stest.cpp 18: '__stdcall mysql_options(st_mysql *,mysql_option,cons t char *)' の再宣言で型が一致していない エラー E2344 c:\mysql\include\mysql.h 270: 一つ前の '__stdcall mysql_options(st_ mysql *,mysql_option,const char *)' の定義位置 エラー E2063 stest.cpp 18: 不正な初期化 エラー E2293 stest.cpp 18: ) が必要 エラー E2040 stest.cpp 19: 宣言が正しく終了していない エラー E2040 stest.cpp 24: 宣言が正しく終了していない エラー E2190 stest.cpp 26: 不要な } エラー E2190 stest.cpp 26: 不要な } *** 17 errors in Compile ***

noname#9119
noname#9119
回答No.8

「代入した値は使われていない」の警告は、 MYSQL *mysqldb = NULL; で初期化して、全く使用せずに mysqldb = mysql_connect(... と別の値を代入しているからです。

sea_clear
質問者

補足

回答有難うございます。 サンプルプログラムもありました。私の見間違いでした。 まず、サンプルプログラムについての質問なのですが? サンプルプログラムのソースはコンパイラからとMYSQLを使用するために全部必要なのでしょうか? サンプル全ての内容が完璧に理解できておりません。 わからない部分が何箇所かあります。 mysql_init mysql_real_connect mysql_select_db mysql_fetch_row だけで接続およびレコードの取得はできないのでしょうか? また、MYSQLの型はポインタの構造体みたいなので、 mydata->host = "0,0,0,0"と代入したほうがいいのでしょうか? 必ず mysql_init mysql_real_connect mysql_select_db mysql_fetch_row で詰まってしまいます。 また、これらについて、詳しく理解しておりません。 すいませんが、よろしければご教授ください。 #include <windows.h> #include <stdio.h> #include <string.h> #include <mysql.h> #include <mysql_com.h> #include <my_global.h> #define USE_OLD_FUNCTIONS int main() { int i,rowcount; char szdb[50]; MYSQL *myData; MYSQL_FIELD *resultfield; MYSQL_RES *resultset; MYSQL_ROW resultrow; strcpy(szdb,"db"); if ( (myData = mysql_init((MYSQL*) 0)) && mysql_real_connect( myData, "0,0,0,0", "mysql", "mysql0000", szdb, MYSQL_PORT, NULL, 0 )); printf("%s\n",myData); if(mysql_select_db(myData, szdb)< 0){ printf( "Can't select the %s database !\n", szdb) ; mysql_close( myData ) ; return 2; } mysql_query(myData,"select * from shouhinm"); resultset = mysql_store_result(myData); rowcount = mysql_num_rows(resultset); for (i=0;i < rowcount;i++){ resultrow = mysql_fetch_row(resultset); printf("%d %s %s<br>\n",i+1,resultrow[0],resultrow[1]); } return 0; } 次のようなエラーがでてしまいます。 エラー E2096 a.c 20: 不正な構造体の演算(関数 main ) エラー E2108 a.c 21: typedef 'MYSQL' の使い方が間違っている(関数 main ) 警告 W8019 a.c 21: コードは効果を持たない(関数 main ) エラー E2342 a.c 24: パラメータ 'mysql' は st_mysql * 型として定義されている st_mysql は渡せない(関数 main ) エラー E2342 a.c 26: パラメータ 'sock' は st_mysql * 型として定義されている st_mysql は渡せない(関数 main ) エラー E2342 a.c 31: パラメータ 'mysql' は st_mysql * 型として定義されている st_mysql は渡せない(関数 main ) エラー E2342 a.c 33: パラメータ 'mysql' は st_mysql * 型として定義されている st_mysql は渡せない(関数 main ) *** 6 errors in Compile *** 違う話になってしまうのですが、 strcpy(g[2].blockstr + x * 2,"☆”,2); 一行のソースがあります。 構造体のblockstrというメンバー変数に☆をコピーしているのはわかるのですが、2という数字の意味および代入の 仕方がどうなっているのかが、分かりません。 よろしければ、これについてもご教授ください。 長い間本当に回答頂きありがとうございます。

noname#9119
noname#9119
回答No.7

4.0.14b にはサンプルプログラムがついていました。 このバージョンでは mysql_connect() は新しい関数に取って代わられたようで USE_OLD_FUNCTIONS を定義しないと使用できませんでした。 >bccコンパイラでMYSQLに接続・レコードの値などを出力は >可能なのでしょうか? どこかヘッダーファイルなど手直しが必要になるかもしれませんが、使えないことは無いでしょう。 >ソケット 「ソケット」は概念的なもので、通信の片方の端?です。 MySQLのライブラリを通して利用する限りは、単にデータベースに接続するものでいいんじゃないでしょうか。 >警告 W8004 a.c 11: 'mysqldb' に代入した値は使われていない(関数 main )というエラーがでてしまいます。 警告はエラーではありません。 コンパイラが、mysqldb に代入した値が使われていないのではないかと判断しただけです。 警告があってもコンパイルできます。 connect が失敗していないかも見たほうがいいですね。

noname#9119
noname#9119
回答No.6

C++Builder6でコンパイルしたからかもしれませんが 最初に出たエラーは エラー E2303 C:\mysql\include\mysql_com.h 116: 型名が必要 でした。 mysql_com.hの116行目は > my_socket fd; /* For Perl DBI/dbd */ my_socketの定義がされていないので、このへんを解釈できなかったのでしょう。 grep などで検索すれば my_socket の定義が分かりますが、 ようするに #include <mysql.h> の前に #include <windows.h> が必要みたいですね。 また、古い関数を使用しているようなので #define USE_OLD_FUNCTIONS も定義しておく必要がありました。 C:\mysql\examples\libmysqltest\myTest.c が参考になりそうです。

sea_clear
質問者

補足

残念なことにC:\mysql\examples\libmysqltest\myTest.c というファイルが私のMYSQLにはございません。 bccコンパイラでMYSQLに接続・レコードの値などを出力は 可能なのでしょうか? あまりにも私が初心者なので心配してしまいます。 ソケットというのはプロセス(CPU単位)間通信するためのもの? この場合だと、MYSQLとBCCコンパイラ間通信するためのもの と考えていいのでしょうか? #define USE_OLD_FUNCTIONS はCのソースのincludeの下に定義しておけばよろしいでしょうか? if(mysql_select_db(mysqldb,"db"))の所を if(mysql_select_db(mysqldb,"db")< 0) return 0; に変更しておきました。 次のようなエラーがでてしまいました。 警告 W8004 a.c 11: 'mysqldb' に代入した値は使われていない(関数 main )というエラーがでてしまいます。 MYSQLのmysql_connect等の関数が正常に動作していないのでしょうか?それとも、正常に動作できないのでしょうか?設定や環境が原因で。 すいませんがよろしくお願いします。

noname#9119
noname#9119
回答No.5

>ilink32.cfgの設定 >-L"c:borland\bcc55\Lib" >はこのようにしてあります。 -L"C:\borland\bcc55\Lib" \が抜けてますが、打ち間違いでしょうか。

sea_clear
質問者

補足

恥ずかしいですが\には気づきませんでした。 ありがとうございます。 補足のMYSQLのソースの#includeの部分を #include <stdio.h> #include <mysql.h> に変更しました。 スペル間違いmsyql_fetch_rowをmysql_fetch_rowに変更。 そして、bcc32.cfgに-I"c:\mysql\include"を追加。 これをしないと何故か他のmysqldb,mysql_select_db等の 関数を呼び出せなかったのです。 補足ソースのincludeのところのパスの認識ができなかっただけかもしれませんが。 この方法でよろしいのでしょうか? 上記の部分変更後の補足のmysqlの接続のソースを コンパイルしたらですね。 次のようなエラーがでてしまいました。 エラー E2139 c:\mysql\include\mysql_com.h 115: 宣言に ; がない *** 1 errors in Compile *** エラー E2139 c:\mysql\include\mysql_com.h 115: 宣言に ; がない インクルードファイルの中身に間違いがあるのか? インクルードファイルの指定に間違いがあるのかわかりません。 mysql_com.hを#include<mysql_com.h>を追加しても同じエラーがでてしまいます。 すいません、何回もよろしくお願いします。 急いでませんので、時間の空いているときにお願いします。それではよろしくお願いします。

noname#9119
noname#9119
回答No.4

ilink32 の構文は次の通り。 ILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile] ilink32 -c c0x32.obj, hello.obj, hello.exe, , cw32.lib import32.lib としてしまうと、 [options]:-c startup:c0x32.obj myobjs:なし [exe]:hello.obj [mapfile]:hello.exe [libraries]:なし [deffile]:cw32.lib import32.lib [resfile]:なし を指定したことになります。 c0x32.obj の後のカンマが余計です。 Fatal: 余分な DEF ファイルが指定された : import32.lib というエラーは多分 DEF ファイルはひとつしか指定できないから? ilink32 では無理して -c オプション使わなくていいですよ。

sea_clear
質問者

補足

何回も申し訳ございません、 しかも、初歩的なミスに詳しく書いて頂きありがとうございます。 今度のも初歩的なミスでしたら、申し訳ございません。 指定されたように、ilink32 c0x32.obj hello.obj,hello.exe, ,cw32.lib import32.libと入力すると今度はですね。 Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: ファイル C0X32.OBJ が開けませんとでてしまいます。 bcc.cfgファイルの設定 -I"c:\borland\bcc55\Include" -L"c:\borland\bcc55\Lib" ilink32.cfgの設定 -L"c:borland\bcc55\Lib" はこのようにしてあります。 この前の質問する前にもここで補足しているエラーがでていたのですが、-c(小文字と大文字の区別)をつけたら、このエラーがなくなったので安心していましたが、またでまして、-cをつけても、同じようにでてしまいます。 すいません、これについても教えて頂けますか。 何回も詳しく一から教えて、 頂けてありがとうございます。 忙しいところ申し訳ございません。

noname#9119
noname#9119
回答No.3

>これはbcc55コンパイラのBinフォルダから >coff2omf c:\mysql\lib\opt\libmysql.lib >を打ち込めばいいのでしょうか?と聞きたかったのです。 bcc55コンパイラのBinフォルダにはPATHを通しているでしょうから、 別にbinフォルダに移動しなくてもcoff2omfは使えます。 >一から教えて それでは何が間違ってるのか分からないのかの切り分けテスト。 問題. プロンプトに Hello, World. と表示するプログラムを作ってみましょう。 ただし、bcc32 で -c オプションを使用。ilink32 でリンクして実行ファイルを作ること。 完成したら、補足に書いたソースで同様にコンパイル。 コンパイルエラー、リンクエラーが出たらエラーメッセージを見て修正。 実行したときにエラーが出てしまうなら、デバッガで追ってみたりprintfでメッセージを出してどこでエラーになってるか調べる。 詰まったら補足で聞いてください。

sea_clear
質問者

補足

回答ありがとうございます。 何がわからないのか切り分けテストを行い。 HelloWorldと表示されるhello.cppを作成し、 次のコマンドをMS上で入力しました。 C:\borland\bcc55\Bin>bcc32 -c hello.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland hello.cpp: C:\borland\bcc55\Bin>ilink32 -c c0x32.obj,hello.obj,hello.exe,,cw32.lib import32 .lib Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Fatal: 余分な DEF ファイルが指定された : import32.lib すると Fatal:余分なDEFファイルが指定されました: というエラーかどうかわかりませんが、 これはどういうものなのでしょうか? 調べましたが、参考になるものを探すことができませんでした。 hello.exe.ファイルも作成されておりません。 すいませんがよろしくお願いします。

noname#9119
noname#9119
回答No.2

>これはBcc55のMS-DOS上で >bcc32 coff2omf c:\mysql\lib\opt\libmysql.lib >とコマンドを打ち込めばいいのでしょうか? 「Bcc55のMS-DOS上」というのは意味不明。 ヘルプには Coff2Omf [options] InputFile OutputFile とあります。 Coff2Omfはコマンド名。 InputFileは入力ファイル(変換するファイル名)。 OutputFileは出力ファイル(保存するファイル名) [options]はオプションで、[括弧]で囲まれているのは省略可能ということ。 -qオプションを指定してmsvc.libを変換してbcc.libというファイル名で保存する場合は Coff2Omf -q msvc.lib bcc.lib となります。 >2 ilink32 obj-Dateien, exe-Dateiname, map-Datei, Libraries これは多分リンカの使い方の説明でしょう。 ヘルプだと ILINK32 [@respfile][options] startup myobjs, [exe], [mapfile], [libraries], [deffile], [resfile] >3 -> ilink32 c0x32.obj testmysql.obj , testmysql.exe , , import32.lib cw32.lib libmysql.lib この例では [@respfile][options] と[mapfile], [deffile], [resfile]は省略。 startup に c0x32.obj を指定。これはコンソール(DOSプロンプト)用のスタートアップモジュールです。 myobjs にはソースをコンパイルして作成した.objを指定します。ここでは testmysql.obj 。複数指定するにはスペースで区切る。 [exe]にはリンクして作成する実行ファイル名を指定。testmysql.exe [libraries]には必要なライブラリファイルを指定。IMPORT32.LIBを入れると大体のWin32 APIを使えます。 cw32.libはシングルスレッド版のCランタイムライブラリで、C言語の用意されている関数が使えます。 libmysql.libはMySQLのライブラリ。 myobjsに指定するオブジェクトファイルを作るには bcc32 -c testmysql.c のように -c オプションを付けます。 -c オプションを使わない場合は、 コンパイラ(bcc32)はコンパイルしてtestmysql.objを作成した後、リンカに渡して実行ファイルを作ろうとします。

sea_clear
質問者

補足

「Bcc55のMS-DOS上」というのは意味不明。 これはbcc55コンパイラのBinフォルダから coff2omf c:\mysql\lib\opt\libmysql.lib を打ち込めばいいのでしょうか?と聞きたかったのです。 いろいろしていくうちに、bcc55コンパイラとMYSQLの設定が間違っているのか、ソースの書き方間違っているのか分からなくなってしまいました。よろしければ、 Windows上のbcc55コンパイラからWindows上のMYSQLに 接続・レコードデータ取得・切断の仕方を一から教えていただけないでしょうか? ASPではできるようになっているのですが、どうしても、bcc55からmysqlでしてみたいのです。全然ソースが違うかもしれませんが、もしよろしければご教授ください。 #include "c:\mysql\include\mysql.h" #include <stdio.h> int main() { int i,rowcount; MYSQL mysql; MYSQL *mysqldb = NULL; MYSQL_FIELD *resultfield; MYSQL_RES *resultset; MYSQL_ROW resultrow; mysqldb = mysql_connect(&mysql,"MYSQLアドレス 0,0,0,1","ユーザ名","パスワード"); mysql_select_db(mysqldb,"db"); mysql_query(mysqldb,"select * from shouhinm"); resultset = mysql_store_result(mysqldb); rowcount = mysql_num_rows(resultset); for (i=0;i < rowcount;i++){ resultrow = msyql_fetch_row(resultset); printf("%d %s %s<br>\n",i+1,resultrow[0],resultrow[1]); } return 0; }

関連するQ&A

  • MYSQL

    C・C++のソースからMYSQLの接続、テーブル・クエリの管理、処理。レコードデータの取得または利用といったことがしてみたいのです。 C言語のソースにMyglobal.hとmysql.hをincludeして、 #include<Myglobal.h> #include<mysql.h> と記述するのでしょうか? MYSQLのコマンドを使用できるように、libmysql.libや mysqlclient.libを設定するにはどうするのでしょうか? MYSQLリファレンスをみても分からない状況です。 環境はBorland C++ 又はWIDE Studioです。 OSはWINDOWSです。 Visual C++からしか、動作させることができないのでしょうか? C++等のCのソース上で動かしてみたいのです。 分かる方、是非詳しく使用例またはサンプルソースを 教えてください。 よろしくお願いします。

  • コンパイル時のエラーについて>エラー E2209 警告 W8065?

    以前にも似たような質問がでていましたが・・・ 初心者なのですが下記のようにエラーによりコンパイル出来ません。 どなたか原因のわかる方いましたらいお教え下さい。 宜しくお願いします。  C:\source>bcc32 sample1.c Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland sample1.c: エラー E2209 sample1.c 1: インクルードファイル 'stdio.h' をオープンできない 警告 W8065 sample1.c 4: プロトタイプ宣言のない関数 'printf' の呼び出し(関数 main) *** 1 errors in compile *** もちろんbinディレクトリに bcc32.cfg【-I"c:\Borland\Bcc55\Include" -L"c:\Borland\Bcc55\Lib"】 と ilink32.cfg【-L"c:\Borland\Bcc55\lib"】 は入れてあります。 なんでできないんでしょかTT

  • bcc55のエラー(cox32.obj)

    コンパイルすると、いつも Fatal:ファイルCOX32.OBJが開けません と言うエラーが出てしまいます。 bcc55のbinフォルダーにbcc32.cfgというファイルを作り、中身に -I"c:\Borland\Bcc55\include" -L"c:\Borland\Bcc55\lib" ilink32.cfgには -L"c:\Borland\Bcc55\lib" となっています。 初歩的なことかもしれませんがよろしくお願いします。

  • BCCでコンパイルする際に静的リンク指定が無視される

    GLUTを使用したCプログラムをBCCでコンパイルしたのですが、実行ファイルが生成されてもライブラリが静的リンクされません。 コンパイルオプションとして、 > bcc32 *.c glut32.lib glu32.lib winmm.lib とlibファイル名のリストを与えているのですが…… 当然ながら、bcc32.cfgとilink32.cfgの環境変数でlibファイルへのパスは与えてあります。

  • ilink32について。'__setargv__'と'__turboFloat__'が未解決

    WindowsXP+bcc32+ilink32でGLUTを使ったプログラムを書いています。 bccの設定はsetbcc.exe(http://www.cmagazine.jp/setbcc.html)を使いました。 opengl32.lib, glu32.lib, glut32.libはimplib.exe(http://blog.jyoken.net/?eid=478291)を使って作成しました。 以上の設定でbcc32付属のMakeを使ってmakeしたところ、 コンパイル後のリンクで以下のようなエラーが出てしまい困っています。 どなたか解決法を教えていただけないでしょうか? よろしくお願いします。 --------------------- エラーの内容 --------------------- Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル '__setargv__' が未解決(root が参照) Error: 外部シンボル '__turboFloat' が未解決(root が参照) --------------------- --------------------- 使用しているMakefile --------------------- CC = bcc32 LINKER = ilink32 SRCS = main.c callback.c Task.c Logger.c OBJS = $(SRCS:.c=.obj) TARGET = main.exe CFLAGS = -wall -O2 LFLAGS = LIBS = opengl32.lib glu32.lib glut32.lib INCLUDE = -I"C:\borland\bcc55\Include" LIB = -L"C:\borland\bcc55\Lib" all: $(TARGET) .SUFFIXES : .obj .c .c.obj: $(CC) $(CFLAGS) -c $(SRCS) $(TARGET): $(OBJS) $(LINKER) $(LFLAGS) $(LIB) $(OBJS),$(TARGET),,$(LIBS) ---------------------

  • コンパイル~リンクを行いたいのですが

    freecommandlinetools2というものをインストールしたのですが、それを使用する際 C:\borland\Project\1 にcのソースファイル1_4.cがあるとして 以下のコマンドでコンパイル~リンクまで行う --コマンド-------------------- cd C:\borland\Project\1<enter> set path=C:\borland\bcc55\Bin<enter> bcc32 -I"C:\borland\bcc55\Include" -L"C:\borland\bcc55\Lib" 1_4.c<enter> ---------------------------- コンパイルエラー、リンク時のエラーがなければ C:\borland\Project\1フォルダに2_4.exe が作成されており、 コマンドプロンプトから実行する。 と、書かれていました。 コマンドプロンプトの使用フォルダをCドライブに変更したので、cdはいらないと思い、borland\Project\1でエンターキーを押したのですが、『内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチファイルとして認識されていません』としかなりません。そもそも<enter>というのは、エンターキーのことで良いのでしょうか? 右も左も判らない状態で、どう調べればいいのかも判らず困っています。 無知で恥ずかしいのですが、どなたかお教え頂けないでしょうか。

  • .objファイル、.lib ファイルについて

    ◆C++でのコンパイルされたプログラムの参照について。  以前、VB.netで開発をしていた時は、コンパイルをするとDLLが作成され、  それを他のプログラムからリンクして使用していました。  C++の場合h、cppのファイルをコンパイルすると、「.DLL」はできないのでしょうか? ◆.obj、.lib について  Visual Studioにて、.obj、.lib を、参照先に設定していますが、  内容をよくわかっていません。  オブジェクトリンク、ライブラリリンクとは、  (1)それぞれどんな概念なのでしょうか?  (2).obj、.libでは何が違うのでしょうか?

  • bccは分かりましたがgccが使えません

    Cのソースの#include <stdio.h>でエラーになります。 gccではbccのbcc32.cfgで行うような設定はどのようにすればよいですか? MINGWのコンソールで $ echo $C_INCLUDE_PATH c:/msys/1.0/mingw/include;c:/msys/1.0/mingw/lib/gcc/mingw32/3.4.5/include このように出ます。 $ gcc myapp.c で#include <stdio.h>の行でコンパイルエラーです。 MINGWでは$C_INCLUDE_PATHを正しく設定できているみたいですが、gcc.exeにそれが伝わっていないみたいです。 AUTOEXEC.BATには何も追記したくないので何も追記していません。 どうすればライブラリのパスを通せますか?

  • 分割コンパイルのリンク時のファイル名の指定法

     Visual Studioコマンドプロンプト(2010)で、分割コンパイルを試みています。自分で調べて、次のことまでは分かりました。 ソースファイル “1.c” “2.c” “3.c” がある。それぞれ、リンクはせずにコンパイルだけ行うには、 “cl /c 1.c”で、“1.obj”が生成する。 “cl /c 2.c”で、“2.obj”が生成する。 “cl /c 3.c”で、“3.obj”が生成する。 これらを、次のようにリンクすると、 “link 1.obj 2.obj 3.obj” ↓ “1.exe” が生成する。  この最後のリンクのところで、“1.exe”でも“2.exe”でも“3.exe”でもない別のファイル名(“program.exe”など)に、実行ファイルを指定したいのですが、 “link /?” を見てみると、どのオプションを指定すればいいか分かりません。どなたか、ご教授ください。お願い致します。

  • Borland C++ Compiler 5.5でのコンパイル可能ディレクトリの継承?

    Borland C++ Compiler 5.5.1をインストールしてサンプルソースをコンパイルしようとしたところ、「bcc32が認識されていない」エラーが出ました。 bccの設置場所はc:borland\bcc55\Binであり、Pathの設定も行い、bcc32.cfgとilink32.cfgもBinディレクトリ下に正しく作成済みです。 また、ソースの場所はc:sourceにsample1.cとして保存してあります。 なお、コマンドプロンプトでC直下での「C:\>bcc32」と入力すると正しく内容が表示され、 「C:\>bcc32 source\sample1.c」と入力すればC直下にコンパイルしたEXEファイルが生成されます。 しかし、「C:\source>bcc32」や、「C:\source>bcc32 sample1.c」では非認識エラーとなってしまいます。 windowsのOSはXP SP2のホームエディションです。 なぜ、C直下でしかbccが反映されていないのでしょうか? 対処法を教えてください、お願いします。

専門家に質問してみよう