编译卷影复制服务SDK的一部分vshadow时发生链接器错误 p>我在尝试编译VSS SDK 的C++项目时,会遇到链接错误 Error 1 error LNK2019: unresolved external symbol "long __stdcall ShouldBlockRevert(wchar_t const *,bool *)" (?ShouldBlockRevert@@YGJPB_WPA_N@Z) referenced in function "public: void __thiscall VssClient::RevertToSnapshot(struct _GUID)" (?RevertToSnapshot@VssClient@@QAEXU_GUID@@@Z) revert.obj vshadow
ShouldBlockRevert使用了两次,一次在顶部声明,一次在实际使用时使用 声明如下:编译卷影复制服务SDK的一部分vshadow时发生链接器错误 p>我在尝试编译VSS SDK 的C++项目时,会遇到链接错误 Error 1 error LNK2019: unresolved external symbol "long __stdcall ShouldBlockRevert(wchar_t const *,bool *)" (?ShouldBlockRevert@@YGJPB_WPA_N@Z) referenced in function "public: void __thiscall VssClient::RevertToSnapshot(struct _GUID)" (?RevertToSnapshot@VssClient@@QAEXU_GUID@@@Z) revert.obj vshadow,c++,linker-errors,volume-shadow-service,C++,Linker Errors,Volume Shadow Service,ShouldBlockRevert使用了两次,一次在顶部声明,一次在实际使用时使用 声明如下: HRESULT APIENTRY ShouldBlockRevert(IN LPCWSTR wszVolumeName, OUT bool* pbBlock); 在这里使用: CHECK_COM(::ShouldBlockRevert(Snap.m_pwszOriginalVolumeName, &bBlock)); if (bBlock) { ft.Writ
HRESULT APIENTRY ShouldBlockRevert(IN LPCWSTR wszVolumeName, OUT bool* pbBlock);
在这里使用:
CHECK_COM(::ShouldBlockRevert(Snap.m_pwszOriginalVolumeName, &bBlock));
if (bBlock)
{
ft.WriteLine(L"Revert is disabled on the volume %s because of writers",
Snap.m_pwszOriginalVolumeName);
return;
}
对不起,我对C++不太好。 < P>根据博客文章:
因为我在VSSAPI .LIB上运行了DIPPBO/导出,发现它确实导出了ShouldBlockRevert,但是由于C++名称的限制,被修改的名称不同。为什么不同?因为在vssapi.lib中,ShouldBlockRevert的第一个参数不是wchar\u t,而是unsigned short。“那又怎样”,你在想,“它们是等价的”。我并不反对,但编译器出于名称管理的目的将它们视为不同的类型。有什么办法?那么,在项目属性中禁用C/C++语言属性页中的内在W查尔夫类型(相当于/ZC:WCHARYT-转换),如果你是这个星球上的两个人之一,用MaFage文件构建VisualC++项目的话)。 完成后,LPCWSTR宏被定义为无符号短、名称混乱匹配、行星对齐,并且您可以链接。QED
啊,当我将配置切换到debug xp而不是debug Server时,错误消失了。很可能这些配置在处理wchar_\t的方式上有所不同。您能确认吗?那么您可能没有在调试服务器中使用此功能。