![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
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)
---------------------
No.2ベストアンサー
- 回答日時:
BorlandのCコンパイラは、スタートアップルーチンを含むオブジェクトファイルは
ライブラリファイルの中にはアーカイブされていなくて、適切な
スタートアップ用.objファイルを別途指定してリンクしていたと思います
#bcc32.exeを使った場合はコンパイラドライバが自動でやってくれる。
質問にあるMakefileの内容を見た感じでは、そのOBJファイルを指定していませんので、
それが原因で解決できないシンボル名がでているのだと思います。
ということで、ilink32.exeでリンクする対象にそのスタートアップ用OBJファイルを
含めてやればよろしいかと。
C0なんとか.OBJという名前で、コンパイルオプションに応じていくつか
存在していたと思います。
#置かれている場所はライブラリファイルのあるディレクトリです。
無事解決しました。
sakusaker7さんの言う通り、スタートアップモジュールを指定していないことが原因でした。
普段はVCとgcc+Makefileを使っていてスタートアップモジュールのリンクを意識することが殆どありませんでした。
今後は気を付けようと思います・・・。
ありがとうございました。
------------------------
Makefileに追加した部分
------------------------
# スタートアップモジュール
# http://dn.codegear.com/jp/print/33545
# c0w32.obj : 32bitコンソールアプリ用スタートアップOBJ
# cw32.lib : シングルスレッド用ランタイムライブラリ
# import32.lib: BCCコアAPIライブラリ
STOBJS= c0x32.obj
STLIBS= cw32.lib import32.lib
------------------------
------------------------
Makefileの変更箇所
------------------------
$(TARGET): $(OBJS)
$(LINKER) $(LFLAGS) $(LIB) $(STOBJS) $(OBJS), $(TARGET), , $(STLIBS) $(LIBS)
------------------------
No.1
- 回答日時:
提示された情報からわかるのは、
main.c, callback.c, Task.c, Logger.cのいずれかにあるであろう
root関数が呼び出している
setargv__関数とturboFloat関数の2つのオブジェクトコードが
見つからなかった、ということです。
外部シンボルを解決する際、関数名の大文字と小文字は別のものとして扱います。
解決できなかった2つの関数のソースコードをご自分で書かれたのでしたら、
関数本体と呼び出し側とで名前が食い違っていないかどうか、
まずは確認してみてください。
私の説明不足でした・・・。申し訳ありません。
「BCCのコア(と思われる)部分に必要な何かが足りないと思うのだけど、何が足りないのか分からない」というのが問題の根本でした。
質問文の書き方については以後気を付けるようにします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perl の外部モジュールの利用方法 3 2022/07/10 18:34
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- UNIX・Linux AWSのEC2のZabbixユーザーでawscliコマンドが実行できない状態を解決する 1 2022/12/06 22:17
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- その他(プログラミング・Web制作) mariadbでのエラー 1 2022/11/15 12:31
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Ruby Ruby / passenger のインストールについて 1 2023/01/30 18:31
- Visual Basic(VBA) VBA リボンののリカバリーでオーバーフローエラーになります 2 2023/07/04 19:07
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- 中古パソコン メモリの限界 4 2023/01/18 17:04
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ilink32について。'__setargv__...
-
opencvの練習
-
C言語のエラー LNK1120: 外部参照
-
パブリックシンボルとは?
-
DXライブラリ3DをVisual C++200...
-
python エラー
-
エクセルのエラーメッセージ「4...
-
<unistd.h>をVisualStudioでつ...
-
アプリケーションのDLLファイル...
-
VBScriptによるExecuteExcel4Ma...
-
<math.h>があるのにsqrtが・...
-
math.hに含まれる関数が使えない
-
eclipseでプログラムが実行でき...
-
C言語のPathFileExistsについて
-
gcc コンパイル killed
-
obj オブジェクトファイルがで...
-
VC6でCheckTokenMembershipが使...
-
C#のコマンドラインの分割コ...
-
MinGWのコンパイル方法(初心者)
-
eclipseでデバックするとエラー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
外部依存関係について
-
LNK2019: 外部シンボル どのよ...
-
外部シンボルの未解決のエラー
-
LNK2001(Pro*c)
-
外部シンボル" ~~"は未解決で...
-
popen・pcloseについて
-
ステータスバーを作ろうとして...
-
コンパイルエラー
-
error LNK2001について
-
ilink32について。'__setargv__...
-
「外部シンボルが未解決」につ...
-
パブリックシンボルとは?
-
リンカのエラー
-
IP Helper APIを使うとエラーが...
-
VC++始めたんですが、エラーの...
-
ビデオキャプチャ(VC++超初心...
-
C言語でレジストリ取得「未解決...
-
C++でのエラー LNK2001
-
VC++2008でのサンプルプログ...
-
C++の関数をfortranから呼びた...
おすすめ情報