3

我按照本网站http://wiki.videolan.org/GenerateLibFromDll上的说明从 dll 生成 lib 文件。def 文件创建得很好,我已经按照建议对其进行了编辑,但是当我尝试生成 lib 文件时,我收到了无效或损坏文件的 LNK1107 错误。任何帮助都将受到欢迎。

问候

4

1 回答 1

2

尝试另一种方法:通过 GetProcAddress 获取指针从 dll 调用函数;

示例: C++ 调用 dll

更新:

VLC 媒体播放器下载为 7zip 版本;

我选择使用 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) 版权所有 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 Studio 2008 x86 工具的环境。

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 Settings\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) Library Manager Version 9.00.30729.01 版权所有 (C) Microsoft Corporation。版权所有。

创建库 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 回答