3

このサイトhttp://wiki.videolan.org/GenerateLibFromDllの指示に従って、dllからlibファイルを生成しました。defファイルは正常に作成され、提案どおりに編集しましたが、libファイルを生成しようとすると、無効または破損したファイルに対してLNK1107エラーが発生します。どんな助けでも大歓迎です。

よろしく

4

1 に答える 1

2

別の方法を試してください。GetProcAddressでポインタを取得してdllから関数を呼び出します。

例: dllを呼び出すC ++

アップデート:

7zipバージョンとしてダウンロードされたVLCメディアプレーヤー。

GetProcAddressで方法を選択します。

#include <windows.h>
#include <iostream>


int main()
{
    //VLC_PUBLIC_API const char * libvlc_get_version(void);

    //Set directory path with libvlccore.dll and libvlc.dll
    SetCurrentDirectory("C:/Program Files/VideoLAN/VLC");

    HINSTANCE hGetProcIDDLL = LoadLibrary("libvlc.dll");

    FARPROC lpfnGetProcessID = GetProcAddress(HMODULE(hGetProcIDDLL),"libvlc_get_version"); 

    if(lpfnGetProcessID == 0)
    {
        std::cout << "GetProcAddress failed";

        return 1;
    }

    typedef const char * (__stdcall * pICFUNC)(void); 

    pICFUNC MyFunction = pICFUNC(lpfnGetProcessID);

    std::cout << MyFunction() << std::endl;

    //output: 1.1.4 The Luggage

    return 0;
}

私にとっては問題なく動作しますが、文字セットをデフォルトのUnicodeからマルチバイトに変更する必要があります。[プロジェクト]->[プロパティ]->[一般]->[文字セット]。

それを試してみてください!そして成功を祈る!;)

アップデート2:

私はlibを取得しました。ここではcmdからのトレースです。

Microsoft Windows XP [バージョン5.1.2600](C)Copyright 1985-2001 Microsoft Corp.

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin> vcvars32.bat

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin> "C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ Tools \ vsvars32.bat" Microsoft Visual Studio2008x86ツールを使用するための環境を設定します。

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin> dumpbin.exe / exports "D:\ My Downloads \ VLC \ vlc-1.1.4-win32 \ vlc-1.1.4 \ libvlc.dll"

"C:\ Documents and Settings \ Eugene \ My Documents \ Visual Studio 2008 \ Projects \ VLCApp \ VLCApp \ libvlc.def"

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin> lib / def: "C:\ Documents and S ettings \ Eugene \ My Documents \ Visual Studio 2008 \ Projects \ VLCApp \ VLCApp \ libvlc.def" / out: "C:\ Documents and Settings \ Eugene \ My Documents \ Visual Studio 2008 \ Project s \ VLCApp \ VLCApp \ libvlc.lib" / machine:x86 Microsoft(R)LibraryManagerバージョン9.00.30729.01Copyright(C)MicrosoftCorporation。全著作権所有。

ライブラリC:\ Documents and Settings \ Eugene \ My Documents \ Visual Studio 2008 \ Projects \ VLCApp \ VLCApp \ libvlc.libとオブジェクトC:\ Documents and Settings \ Euge ne \ My Documents \ Visual Studio 2008 \ Projects \VLCApp\を作成していますVLCApp \ libvlc.exp

C:\ Program Files \ Microsoft Visual Studio 9.0 \ VC \ bin>

于 2010-10-20T17:20:11.920 に答える