2012-02-07 14 views
0

コンパイルエラーが発生しました。私がしようとしているのは、GetVolumeInformationを使用して、各自が一意のドライブをシリアル化することです。どんな助けでも大歓迎です。ここでGetVolumeInformationエラー

は私のコードです:ここでは次に

#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ファイルが原因で、同じクラス宣言が複数の翻訳単位に含まれるようになり、リンカーはそれらの間の不一致を検出します。 * private *を削除することから始めます。これは無効です。 –

答えて

0

私はわからないが、私はGetVolumeInformation関数は静的関数であるため、問題があるかもしれないと思うので、あなたは、ファンクション文字列^ベース:: GetSerial内部

Base::GetVolumeInformation 

としてそれを呼び出す必要があります。これを試して、それが動作するかどうかを確認してください。

関連する問題