0

これは初心者の質問のように思えますが、私の検索はすべてに関するものを返すC++ or C#ので、ここで質問します。

DLL, SDL.dll.cファイルのあるディレクトリに、があります。インポートして使用したい。使用はサポートされておらず、#import機能しません。

4

3 に答える 3

1

ソースのディレクティブは役に立ちません。どちらでもかまいません。

  • DLLへのリンク、これにはいわゆるlibファイルを使用します。(これは静的に動的なリンクです)
  • LoadLibrary / FreeLibraryおよびGetProcAddressを使用して、関数のアドレスを関数ポインターにマップします(真のダイナミックリンク)

最初のケースでは、使用するDLLのプラットフォームとバージョンに一致する適切なヘッダーファイルも必要です。

2番目の解決策は、使用する関数のプロトタイプが一致する限り、新しいバージョンのDLLをドロップインする場合に機能します。

これは、Windowsを使用していることを前提としています。これは、*。so(共有オブジェクト)ファイルではなく*.dllがある場合に当てはまります。(Linuxシステムの場合、dlfcn.h構文が少し異なるLoadLibrary / FreeLibrary/GetProcAddressの代わりにdlopen/dlclose / dlsymを含めて使用できます。ドキュメントを確認してください)

于 2013-03-23T22:36:08.390 に答える
0

これは、DLLが正しい形式(たとえば、Windows API DLLと同じ標準)であると仮定すると、かなり可能です。

関数を宣言する必要があります-おそらく次のようなヘッダーファイルで:

typedef void(CALLBACK * functionnameptr)(char *、int)、

次に、LoadLibraryを使用してDLLをロードし、それにハンドルを指定します。

handle = LoadLibrary( "SDL.DLL");

次に、GetProcAddress(handle、 "DLLの実際の関数名")を次のように使用します。

functionnameptr lptrfunction;

lptrfunction = GetProcAddress(handle、 "DLLの実際の関数名");

これで、通常Cで関数を使用するのと同じようにlptr関数を使用できます。

于 2013-03-23T22:40:47.260 に答える
0

VisualStudioを使用していると仮定します。

1.) Download  http://www.libsdl.org/release/SDL-1.2.15.zip
2.) unzip and install to for example C:\SDL-1.2.15
3.) In Visual Studio open the properties of the project goto C++ general and add C:\SDL-1.2.15\include to "Additional include directories".
4.) Goto the "Linker" tab and add C:\SDL-1.2.15\lib\x86 to "Additional library directories".
5.) Now go to "Input" under the Linker tab and add SDL.lib; SDLmain.lib to "Additional dependencies"
6.) Go to the "Build Events" tab and "Post build event" and add copy /y C:\SDL-1.2.15\lib\x86\SDL.dll "$(OutDir)

これで、SDLが32ビットのVisualStudioで機能するようになります。

Linuxでは、SDLがすでにインストールされている場合は、「g ++ -02 -ofoofoo.cpp-lSDL」と入力するだけです。

于 2013-03-25T09:13:10.623 に答える