2012-02-07 71 views
0

所以我得到编译错误,我想要做的就是使用GetVolumeInformation来序列化驱动器,这将是每个人都是唯一的。任何帮助将不胜感激。GetVolumeInformation Error

这里是我的代码:

#include "stdafx.h" 
#include "Head.h" 

using namespace System; 
using namespace System::Collections::Generic; 
using namespace System::ComponentModel; 
using namespace System::Data; 
using namespace System::Drawing; 
using namespace System::Text; 
using namespace System::Net; 
using namespace System::Net::Sockets; 
using namespace System::Windows::Forms; 
using namespace System::IO; 
using namespace System::Security::Cryptography; 
using namespace System::Security::Principal; 

namespace SE 
{ 

    String ^Base::GetSerial(String ^strDriveLetter) 
    { 
     UInt32 serNum = 0; 
     UInt32 maxCompLen = 0; 
     StringBuilder ^VolLabel = gcnew StringBuilder(256); // Label 
     UInt32 VolFlags = UInt32(); 
     StringBuilder ^FSName = gcnew StringBuilder(256); // File System Name 
     strDriveLetter += ":\\"; // fix up the passed-in drive letter for the API call 
     bool Ret = GetVolumeInformation(strDriveLetter, VolLabel, safe_cast<UInt32>(VolLabel->Capacity), serNum, maxCompLen, VolFlags, FSName, safe_cast<UInt32>(FSName->Capacity)); 
     return Convert::ToString(serNum); 
    } 
} 

那么这里就是我的Head.h:

#pragma once 

using namespace System; 
using namespace System::Collections::Generic; 
using namespace System::ComponentModel; 
using namespace System::Data; 
using namespace System::Drawing; 
using namespace System::Text; 
using namespace System::Net; 
using namespace System::Net::Sockets; 
using namespace System::Windows::Forms; 
using namespace System::IO; 
using namespace System::Security::Cryptography; 
using namespace System::Security::Principal; 

namespace SE 
{ 
    private ref class Base 
    { 
    private: 
     static bool GetVolumeInformation(String ^PathName, StringBuilder ^VolumeNameBuffer, UInt32 VolumeNameSize, UInt32 %VolumeSerialNumber, UInt32 %MaximumComponentLength, UInt32 %FileSystemFlags, StringBuilder ^FileSystemNameBuffer, UInt32 FileSystemNameSize); 
    }; 
} 

然而,当我编译我得到:

error LNK2022: metadata operation failed (80131187) : Inconsistent method declarations in duplicated types (types: SE.Base; methods: GetVolumeInformationA): (0x06000008). 

我必须有问题?由于

+1

Head.h文件导致这种情况,相同的类声明被包含在多个翻译单元中,链接器发现它们之间不匹配。开始删除*私人*,这是无效的。 – 2012-02-07 01:24:44

回答

0

我不知道,但我想这个问题可能是因为GetVolumeInformation函数是一个静态函数,所以你需要调用它作为

Base::GetVolumeInformation 

功能字符串^基地:: GetSerial内。请试试看看它是否有效。

相关问题