从vlc dll生成lib文件时出现致命错误LNK1107
我按照本网站上的说明从dll生成lib文件。def文件创建得很好,我已经按照建议对其进行了编辑,但是当我尝试生成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
关于尝试另一种方法:通过获取带有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、填充一些特定的结构、设置一些变量或路径等;可能需要检查这些选项;)