こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

「外部シンボル '__inp' が未解決」

Borland C++CompilerとCPad for Borland C++Compilerをつかってdllを作ろうとしているのですが、
コンパイルがうまく行きません。

------------------------------<Dio32c.c>------------------------------
#include "jni.h"
#include <stdio.h>
#include <conio.h>

JNIEXPORT long JNICALL
Java_IO32_InpB(JNIEnv *env, jobject obj, long port)
{return _inp(port);
}

JNIEXPORT void JNICALL
Java_IO32_OutB(JNIEnv *env, jobject obj, long port, long data)
{_outp(port, data);
return;
}
----------------------------------------------------------------------

というプログラムに対し、コンパイル時パラメータを「-WD」と指定してコンパイルすると、以下のメッセージが返ってきちゃいます。

----------------------------------------------------------------------
■C:\My Documents\C> bcc32 -WD Dio32jc.c
Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
Dio32jc.c:

==<警告文は字数制限のため割愛させていただきました。by taropoo>==

Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Error: 外部シンボル '__inp' が未解決(C:\MY DOCUMENTS\C\DIO32JC.OBJ が参照)
Error: 外部シンボル '__outp' が未解決(C:\MY DOCUMENTS\C\DIO32JC.OBJ が参照)
----------------------------------------------------------------------

どなたか、原因&対策、分かりませんでしょうか?

投稿日時 - 2002-04-18 17:32:04

QNo.255133

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

ANo.1

エラーメッセージは、「_inp(),_outp()の関数の本体がない」という意味です。

Borland C は、もっていないので、具体的に指摘できませんが、ライブラリのコマンド(tlink.exe,link.exeなど)を使って、コンパイラのライブラリファイル(*.lib)を調べて、_inp,_outp が入っているライブラリファイルをリンクするようにしてやれば、解決します。

まずは、マニュアルで、inp() 標準関数のページを探しましょう。

ただし、お使いのコンパイラが「Borland C++ 5.5.1 for Win32」なので、気になっていますが、WinNT,2000などでは、直接のIO関数(inp,outp)は使えないと思います。
Win95,98,ME ならOK(のはず)です。

投稿日時 - 2002-04-18 19:13:14

補足

tlink.exe,link.exeは見つかりませんでした。
ilink32.exeと言うのはあるのですが関係あるのでしょうか?
コンパイラのライブラリファイル(*.lib)の調べ方もちょっと分かりません。
ヘルプにはinp()の項目はありませんでした。

も少し具体的に教えていただけますでしょうか?

ちなみにOSはWin98です。

投稿日時 - 2002-04-19 01:16:03

あなたにオススメの質問