从vlc dll生成lib文件时出现致命错误LNK1107

时间:2010-10-20 17:07:22

标签: dll vlc

我按照此网站http://wiki.videolan.org/GenerateLibFromDll上的说明从dll生成lib文件。 def文件创建正常,我按照建议编辑了它,但是当我尝试生成lib文件时,我收到LNK1107错误的无效或损坏的文件。任何帮助都是最受欢迎的。

此致

1 个答案:

答案 0 :(得分:2)

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

实施例: C++ calling a 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更改为多字节: 项目 - &gt;属性 - &gt;一般 - &gt;字符集;

试试吧!祝你好运!;)

更新2:

我得到了lib,这里是cmd的跟踪:

  

Microsoft Windows XP [版本   5.1.2600](C)版权所有1985-2001 Microsoft Corp.

     

C:\ Program Files \ Microsoft Visual   Studio 9.0 \ VC \ bin&gt; vcvars32.bat

     

C:\ Program Files \ Microsoft Visual   Studio 9.0 \ VC \ bin&gt;“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&gt; dumpbin.exe / exports   “d:\我的   下载\ VLC \ VLC-1.1.4-的win32 \ VLC-1.1.4 \ libvlc.dll“

     
    

“C:\ Documents and Settings \ Eugene \ My Documents \ Visual Studio     2008 \项目\ VLCApp \ VLCApp \ libvlc.def“

  
     

C:\ Program Files \ Microsoft Visual   Studio 9.0 \ VC \ bin&gt; lib   / def:“C:\ Documents and S.   ettings \ Eugene \ My Documents \ Visual   工作室   2008 \项目\ VLCApp \ VLCApp \ libvlc.def   “/ out:”C:\ Documents and   设置\ Eugene \ My Documents \ Visual   Studio 2008 \ Project   小号\ VLCApp \ VLCApp \ libvlc.lib”   / machine:x86 Microsoft(R)Library   经理版本9.00.30729.01   版权所有(C)Microsoft Corporation。   保留所有权利。

     

创建库C:\ Documents and   设置\ Eugene \ My Documents \ Visual   工作室   2008 \项目\ VLCApp \ VLCApp \ libvlc.lib   和对象C:\ Documents and   设置\ Euge ne \ My Documents \ Visual   工作室   2008 \项目\ VLCApp \ VLCApp \ libvlc.exp

     

C:\ Program Files \ Microsoft Visual   Studio 9.0 \ VC \ bin&gt;