0

MSVC (Microsoft Visual C++) を使用して dll を作成する場合、他のユーザーが使用するはずの名前を明示的にエクスポートする必要があります。

ファイルで使用した名前を明示的にインポートする必要がありますか?

例:

/*Math.c  will be compiled to a dll*/
__declspec(dllexport) double Sub( double a, double b )
{
    return a - b;
}

Math.c を dll にコンパイルします。

cl /LDd Math.c

これにより、4 つのファイル Math.dll Math.obj Math.lib Math.exp が生成されます。

プログラムで Sub() を使用したいのですが、このように Sub を IMPORT する必要がありますか??

/*TestMath.c*/
#include <stdio.h>

__declspec(dllimport) double Sub( double a, double b );
//or can I just ignore the __declspec(dllimport) ? 
//I can compile TestMath.c to TestMath.exe without it in Win7 MSVC 2010
//but some books mentioned that you should EXPLICT IMPORT this name like above
int main()
{
    double result = Sub ( 3.0, 2.0 );
    printf( "Result = %f\n", result);
    return 0;
}

Math.lib を使って TestMath.exe にコンパイルします。

cl /c TestMath.c //TestMath.c->TestMath.obj
link TestMath.obj Math.lib // TestMath.obj->TestMath.exe

__decclspec(dllexport) またはエクスポート名を明示的に宣言するいくつかの .def ファイルが必要です。エクスポート宣言がない場合、TestMath.exe はエラーを実行します。

私の質問は: IMPORT 申告は必要ですか? 一部の本では「はい」と書かれていますが、それがなくても、デモを正しく実行できます。

4

0 に答える 0