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

从vlc dll生成lib文件时出现致命错误LNK1107,dll,vlc,Dll,Vlc,我按照本网站上的说明从dll生成lib文件。def文件创建得很好,我已经按照建议对其进行了编辑,但是当我尝试生成lib文件时,我得到了一个无效或损坏文件的LNK1107错误。欢迎任何帮助 关于尝试另一种方法:通过获取带有GetProcAddress的指针从dll调用函数 例如: 更新: VLC媒体播放器下载为7zip版本 我选择使用GetProcAddress的方式: #include <windows.h> #include <iostream> int main

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


关于

尝试另一种方法:通过获取带有GetProcAddress的指针从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;
}
#包括
#包括
int main()
{
//VLC_PUBLIC_API const char*libvlc_get_version(void);
//使用libvlccore.dll和libvlc.dll设置目录路径
SetCurrentDirectory(“C:/ProgramFiles/VideoLAN/VLC”);
HINSTANCE hGetProcIDDLL=LoadLibrary(“libvlc.dll”);
FARPROC lpfnGetProcessID=GetProcAddress(HMODULE(hGetProcIDDLL),“libvlc_get_version”);
如果(lpfnGetProcessID==0)
{
std::cout字符集

试试看!祝你好运

更新2:

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

Microsoft Windows XP[版本] 5.1.2600](C)版权所有1985-2001微软公司

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

C:\Program Files\Microsoft Visual Studio 9.0\VC\bin>“C:\Program 文件\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:\我的 下载\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和S 设置\Eugene\My Documents\Visual 演播室 2008\Projects\VLCApp\VLCApp\libvlc.def “/out:”C:\Documents and 设置\Eugene\My Documents\Visual Studio 2008\项目 s\VLCApp\VLCApp\libvlc.lib“ /计算机:x86 Microsoft(R)库 管理器版本9.00.30729.01 版权所有(C)微软公司。 版权所有

创建库C:\Documents和 设置\Eugene\My Documents\Visual 演播室 2008\Projects\VLCApp\VLCApp\libvlc.lib 和对象C:\Documents和 设置\Euge ne\My Documents\Visual 演播室 2008\Projects\VLCApp\VLCApp\libvlc.exp

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


谢谢你的回复,我尝试了这个例子,但它似乎不起作用。@paj7777你知道导出函数的参数吗?这个dll是你自己的库还是第三方的?)我有这些参数,因为我有头文件,dll是vlc的一部分,如果你按照我提供的链接,它将带你去维基获取vlc。谢谢你的帮助。Thanks最近的帖子。调用获取版本是可以的,但是当我尝试调用libvlc_new时,我得到了一个调用约定运行时错误,尽管我很确定我正确地传递了参数。是否有必要对照我自己的约定检查所需的约定?抱歉,我尝试了,但我不知道如何帮助你,我没有使用VLC。可能是exe module在调用libvlc_new之前进行了一些特定的初始化,例如:init COM、填充一些特定的结构、设置一些变量或路径等;可能需要检查这些选项;)