【发布时间】:2009-03-03 22:31:15
【问题描述】:
我正在尝试以编程方式创建一个 .lnk 文件。我更喜欢使用 C,但 C++ 很好(并且是所有 MSDN 的内容)。
相关代码示例为:
#include <windows.h>
#include <shobjidl.h>
#include <shlguid.h>
HRESULT CreateLink(LPCSTR lpszPathObj, LPCSTR lpszPathLink, LPCSTR lpszDesc) {
HRESULT hres;
IShellLink* psl;
/* Get a pointer to the IShellLink interface. */
hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
IID_IShellLink, (LPVOID*)&psl);
return hres;
}
我正在尝试使用 wineg++ 来完成:
wineg++ -mno-cygwin -o t t2.cpp
我收到以下错误:
t2-Tw9YPp.o:在函数“CreateLink(char const*, char const*, char const*)”中: t2.cpp:(.text+0x34): 对‘IID_IShellLinkA’的未定义引用 /usr/bin/ld: t2-Tw9YPp.o: 重定位 R_386_GOTOFF 针对未定义的隐藏符号 `IID_IShellLinkA' 在制作共享对象时不能使用 /usr/bin/ld:最终链接失败:错误值 collect2: ld 返回 1 个退出状态 winegcc:i486-linux-gnu-g++ 失败有什么想法吗?
【问题讨论】:
-
您说您的问题是如何创建快捷方式文件,但您说明的问题是链接器错误。您是否知道如何创建快捷方式,只是在构建程序时遇到了麻烦,或者修复链接器问题仍然让您不知道下一步该做什么?
-
我 认为 我有一些来自 MSDN 的示例代码,如果我可以将它链接起来,它们将构成我需要的基础。我可能应该更改问题标题,它 具有误导性
-
如果你愿意放弃 C/C++,你可以在 Wine 中创建一个 .lnk 链接,使用一个简单的
.batdos shell 脚本in this answer——效果很好。