106Cで作られたDLLを利用する時の「呼び出し形式」(CDECL)について教えてください。stdcallでの呼び出しで作られたDLLは実行できるのですが、CDECL形式で作られたDLLの実行ができません。テストとして二つの引数の値を足して返すCの関数のDLLを以下のように作りました。a+b;}以上のCのプログラムを"BCC_DLL.dll"という名前でDLLにコンパイル。)ただしこれを実行するとABのプログラムがDLLの関数を「参照出来ない」、とエラーとなります。(「stdcall」での呼び出しに変えると実行できます。)AB(WinAPI)はデフォルトでstdcallとのことですがCDECL呼び出しを行っているケースもあります。~」というように関数名の後にCDECLを入れるということなのでとりあえずそう書いてはいるのですが、今のところABからDLL関数を見つけられないようです。CDECL呼び出しについて、お知りの方がおられましたら教えてください。プログラムの内容は提示されているものと異なっていますが、おっしゃるとおりCDECL形式で作られたDLLの実行ができませんでした。ちなみにC/C++でつくられたプログラムでは問題なく実行できました。ソースコードは特に問題ないと思います。私も「なぜそうなるのか」がよくわかりませんが、とりあえず特に理由がなければstdcall呼び出しでよいと思いますが。106たかせさん、返信ありがとうございます。テストしていただいて恐縮です。この問題に突き当たったのは、黒蝿さんが公開されているAB用のDXライブラリの「DxLibDll」を使わせてもらっていて、非公開関数で「DxLibDll」に収録されていないものがあったので("SetUserWindow()")、そこで自分で使う最低限の命令だけを選んでDXライブラリをDLL化出来ないかと思っていた時だったのですが、そこでこのCDECL呼び出しの問題に出会うこととなってしまいました。当初は全てDLLをstdcallで作成していたのですが、DXライブラリの定数や関数の定義は膨大なのでDxLibDllのパッケージに含まれている「DxLib.sbp」というヘッダーファイルだけは借用させてもらおうと思い(使わない関数はコメントアウトするとして)、それをインクルードして実行すると、上手く動いたように思えた次の瞬間、アクセス違反のエラー。エラーの出方がちょっと独特だったので、調べるとDLL呼び出し時のスタックに関わるエラーの様で、「DxLib.sbp」ヘッダファイルの中身を改めて調べると全てCDECL方式での呼び出しになっていました。ヘッダーも書き直し、全てstdcallでの呼び出しに変えることによって動作させることも方法だと思うのですが、現状では出来ればCDECLで呼び出せればと思っています。(経緯が長くなってしまってすみません。ABで作成したウインドウをDXライブラリでもそのまま使いたいという単純な所から、流れ流れてこの質問に至りました。)以降、色々調べてみたのですが、「DxLib.sbp」ヘッダファイルでも書かれているようにAB側のCDECL呼び出し記述自体はあのままで間違っていないと思います。問題はCの関数がどのような名前でDLL化されているのか、ということじゃないかと。(この時点でABの質問板ではあまりふさわしくない質問になってしまっているのですが)(ただし、たかせさんのテストで、C/C++のプログラムからは問題なく実行出来たということを考えれば、それも違うのかなとも思えますよね。Developer/BCC5.5」かによって関数の名前が変わってくるのかな、、と。Developerでも出来たら、と思っていまが、あと少しだけ調べてみて、最終的にはVC++でチェックしたいと思っています。たかせさん、改めて、テストしていただきありがとうございました。何かありましたらよろしくお願いします。