【发布时间】:2010-10-20 17:07:21
【问题描述】:
我按照本网站http://wiki.videolan.org/GenerateLibFromDll 上的说明从 dll 生成 lib 文件。 def 文件创建得很好,我已经按照建议对其进行了编辑,但是当我尝试生成 lib 文件时,我收到了无效或损坏文件的 LNK1107 错误。任何帮助都将受到欢迎。
问候
【问题讨论】:
我按照本网站http://wiki.videolan.org/GenerateLibFromDll 上的说明从 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;
}
它对我来说很好,但你必须将字符集从默认的 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 文件\Microsoft Visual Studio 9.0\Common7\Tools\vsvars32.bat" 设置使用环境 微软视觉工作室 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 ettings\Eugene\My Documents\Visual 工作室 2008\Projects\VLCApp\VLCApp\libvlc.def " /out:"C:\文档和 设置\尤金\我的文档\视觉 工作室 2008\项目 s\VLCApp\VLCApp\libvlc.lib" /machine:x86 Microsoft (R) 库 管理器版本 9.00.30729.01 版权所有 (C) 微软公司。 保留所有权利。
创建库 C:\Documents 和 设置\尤金\我的文档\视觉 工作室 2008\项目\VLCApp\VLCApp\libvlc.lib 和对象 C:\Documents 和 Settings\Euge ne\我的文档\Visual 工作室 2008\Projects\VLCApp\VLCApp\libvlc.exp
C:\Program Files\Microsoft Visual Studio 9.0\VC\bin>
【讨论】: