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

Visual C++でDLLを使いたいのですが、どう宣言したらよいのでしょうか? またDLLは何処に入れればよいのでしょうか?
DLLはMFCで書かれています。
ご教示願います。

A 回答 (3件)

libがないとリンクは出来ないでしょう


LoadLibraryとGetProcAddressを使ったサンプルです。
#include <windows.h>
#include <stdio.h>

HINSTANCE hDll;
long ( __stdcall *fft1dim)(
long,
double,
double*,
double*,
long,
long,
double,
double
);

int main(void)
{
hDll = LoadLibrary("CalFFT.dll");
if( ! hDll ){
printf("DLL load error");
return 1;
}

fft1dim = (long(__stdcall*)(
long,
double,
double*,
double*,
long,
long,
double,
double)
) GetProcAddress( hDll, "fft1dim");
if( !fft1dim ){
FreeLibrary( hDll );
printf("Get function error");
return 2;
}
printf("OK!");
FreeLibrary( hDll );
return 0;
}

この回答への補足

HINSTANCE hDllを使ってやってみましたが、だめでした。

補足日時:2007/08/30 17:19
    • good
    • 0
この回答へのお礼

やはりどうやってもリンク出来ませんでした。
ご丁寧に回答有難うございました。

お礼日時:2007/08/31 16:15

>宣言文を色々確かめたのですが、コンパイルは通り、


>リンクで未解決と出てしまいます。
結局、ヘッダファイルやLIBファイルはあるのでしょうか?
まず、ビルドする時にリンクまで完了させるには、使用する
DLLのエクスポート情報の入った「LIB」ファイルとヘッダファイル
が必要になります。

LIBファイルが公開されていないDLLで関数の仕様のみが公開されて
いる場合、DLLを動的に読み込む方法を使って関数を呼び出します。
WindowsAPIではLoadLibrary関数とGetProcAddress関数を使って
実装します。

この回答への補足

早速の回答有難うございます。
試してみます。

補足日時:2007/08/30 16:48
    • good
    • 0
この回答へのお礼

試したのですがLoadLibrary関数でもダメでリンクでエラーになりました。 有難う御座いました。

お礼日時:2007/08/30 17:34

その.dllには.libと.hファイルはありますか。


又は使える関数の定義とかわかっているのでしょうか。

この回答への補足

早速のご返事有難うございます。
下記がHPに載っていた使い方です。
宣言文を色々確かめたのですが、コンパイルは通り、リンクで未解決と出てしまいます。下記の2項がHPに載っていた定義です。
DLLはsystem、system32、及びカレントディレクトリに置いてます。
宜しくお願い致します。
1.エクスポート関数定義
下記にC関数としてのエクスポート関数を示します
Long fft1dim( long number, //データ数
double dt //サンプリング間隔
double* re, //実数データ
double* im, //虚数データ
long process, //処理分岐フラグ
long window, //ウィンドウ関数フラグ
double LowFrq, //バンドパス時最低周波数
double HighFrq //バンドパス時最高周波数
)
2.VBによるインポート宣言
下記にVBによる関数のインポート宣言を示します
(VBでの宣言はこのreadme.txtの最後の付録を使用すると便利です)
declare function fft1dim lib "CalFFT.DLL" ( byval data_number as long,
byval dt as double,
re as double,
im as double,
byval process as long,
byval window as long,
byval LowFrq as double,
byval HighFrq as double
) as Long

補足日時:2007/08/30 13:54
    • good
    • 0
この回答へのお礼

言い忘れましたが、使おうとしているのはMFCのアプリケーションで
プロジェクトで自動的にリンクされます。

お礼日時:2007/08/30 14:26

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