電子書籍の厳選無料作品が豊富!

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 が参照)
----------------------------------------------------------------------

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

A 回答 (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(のはず)です。

この回答への補足

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

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

ちなみにOSはWin98です。

補足日時:2002/04/19 01:16
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!