プロが教えるわが家の防犯対策術!

outportbなどの関数を使用しようとして
dos.hをインクルードしているのですが
bccでコンパイルするとエラーをはきます。
原因がわかる方いれば教えてください。

下記にソースを載せています。

#include <dos.h >

void outportb(unsigned int portid,unsigned char value){
_asm mov edx,portid
_asm mov al,value
_asm out de,al
}

エラーは

エラー E2451 080311-1.c 6: 未定義のシンボル de(関数 outportb )
*** コンパイル中に 1 個のエラーが発生しました ***

とでます。

A 回答 (2件)

★レジスタ名が違う


>原因がわかる方いれば教えてください。
 ↑
 『de』はレジスタ名ではないからエラーが出ました。
 『dx』『dh』『dl』などのレジスタ名を指定しましょう。
 ※レジスタ名を確認して下さい。
    • good
    • 0
この回答へのお礼

早速のご返答ありがとうございます。

deからdxに変更したところ異なる
下記のエラーが出ました。

Turbo Incremental Link 5.69 Copyright (c) 1997-2005 Borland
Error: 未解決の外部参照 '_main' が C:\PROGRAM FILES\BORLAND\BDS\4.0\LIB\C0X32.OBJ から参照されました

main関数を使っていないのにエラーが出るのが
不思議です。
この原因の回答していただけると幸いです。

お礼日時:2008/03/11 21:42

★コンパイルのオプションを確認。


>main関数を使っていないのにエラーが出るのが
>不思議です。
 ↑
 outportb()関数をコンパイルして *.obj だけ作成するための
 オプションを指定して下さい。BCCのオプションを確認すること。

原因:
 ライブラリとして作成するソースを普通のアプリケーションと同じように
 リンクする指定になっているためmain関数が参照できないとエラーとなった。

解決方法:
 新規プロジェクトでライブラリ作成にするか、
 プロジェクトのプロパティからオプションを変更して下さい。
    • good
    • 0
この回答へのお礼

ちょっとしたミスでした・・・・
すいません。
もっと勉強してから質問します。

ご回答ありがとうございました。

お礼日時:2008/04/30 10:28

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