Мое положение это.Сбой компиляции C# из-за «из-за его уровня защиты»
У меня есть 3 проекта.
PrivacyDetectorDLL PDWrapper WindowsFormsApplication1 (C#)
Моя цель состоит в том, чтобы использовать класс Native C++ в C#. Итак, я использовал класс оболочки C++/Cli. Но я получаю ошибку уровня защиты. Я не понимаю.
Я получаю эту ошибку!
Error 1 'PDWrapper.PDWrapperClass.m_pCPrivacyDetectEngine' is inaccessible due to its protection level K:\Visual Studio 2010 Project\PrivacyDetecter\WindowsFormsApplication1\Form1.cs 23
Мой код c из проекта WindowsFormsApplication1 - это.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public PDWrapper.PDWrapperClass m_PDWrapper = null;
public Form1()
{
m_PDWrapper = new PDWrapper.PDWrapperClass();
unsafe
{
m_PDWrapper.m_pCPrivacyDetectEngine->initEngine();
}
InitializeComponent();
}
}
}
Мой класс PDWrapper выглядит следующим образом.
// PDWrapper.h
#pragma once
using namespace System;
namespace PDWrapper {
public ref class PDWrapperClass
{
// TODO: Add your methods for this class here.
public :
PDWrapperClass();
~PDWrapperClass();
public :
CPrivacyDetectEngine* m_pCPrivacyDetectEngine;
};
}
И Это мой PrivacyDetectEngine заголовок (заголовок из PDWrapper проекта)
#pragma once
class CPrivacyDetectEngine
{
public: // my func
CPrivacyDetectEngine(void);
~CPrivacyDetectEngine(void);
void CPrivacyDetectEngine::initEngine();
void CPrivacyDetectEngine::startEngine(char* currentPath, size_t length);
public: // my util func
int CPrivacyDetectEngine::bytecmp(unsigned char *a, unsigned char *b, int length);
void CPrivacyDetectEngine::extToNum(char* fileName, unsigned int* extNum);
int CPrivacyDetectEngine::checkFileSig(unsigned char* fileSig, int sigLength, char* filePath, char** pFileInternal);
void CPrivacyDetectEngine::parseMSDocText(char** pFileInternal, unsigned int* compSize, unsigned int* decompSize);
char* CPrivacyDetectEngine::infData(char* pFileData, int compSize, int decompSize);
void CPrivacyDetectEngine::privacyDetectXML(char* text, int textLength, int* pItemIndex, char* filePath);
void CPrivacyDetectEngine::checkSocialNum(char* text);
public: // my var
int driverCount;
char driverName[256];
unsigned int parseFileList;
};
Мой PrivacyDetectEngine заголовок из PrivacyDetectorDLL такой же, но есть __declspec (dllexport) между классом CPrivacyDetectEngine как
class __declspec(dllexport) CPrivacyDetectEngine
Я понятия не имею, в чем проблема .... Кто-то, пожалуйста, помогите мне.
Вы перестроили все проекты? – SLaks
Mark 'class CPrivacyDetectEngine' как' public class CPrivacyDetectEngine'. – Saravanan