Я пытаюсь установить связь между VC ++ DLL и приложением C #. Я прочитал тонны ресурсов и материалов, я пытался сделать это и с файлами MemoryMapped, и с Pipes, но, к сожалению, я не смог приступить к работе.
Вот как я создаю часть "приемника" / сервера, написанную на C #:
// MemoryMappedFile approach
mmf = MemoryMappedFile.CreateNew(
@"myMMF",
1024*1024,
MemoryMappedFileAccess.ReadWriteExecute);
// Named Pipe approach
NamedPipeServerStream pipe = new NamedPipeServerStream("myPipe", PipeDirection.InOut);
Это аналог VC ++:
// MMF approach
HANDLE fmap = ::OpenFileMapping(FILE_MAP_READ | FILE_MAP_WRITE, false, (LPCWSTR)"myMMF");
if(fmap == NULL)
return errorMsg();
// Named pipe
HANDLE pipe = ::CreateFile((LPCWSTR)"\\\\.\\pipe\\myPipe", GENERIC_WRITE, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
if(pipe == INVALID_HANDLE_VALUE)
return errorMsg();
Моя проблема в том, что независимо от того, какой подход я использую, вызовы open всегда возвращают ошибку «файл не найден». Оба приложения работают под одной учетной записью пользователя в моей 64-битной Windows 7. Чего мне здесь не хватает?