LPCSTR создает необъявленную переменную в проекте CLR

0

Я пытаюсь создать функцию c++ в оболочке dll, которая принимает char *, преобразует ее в LPCSTR, а затем использует ее как переменную в MessageBox. Функция и преобразование отлично работают в исходном классе, но когда я пытаюсь использовать эту функцию в проекте CLR, я получаю ошибку Undeclared Identifier с переменной LPCSTR.

Пустой заголовок проекта:

#pragma once

#include <stdexcept>
using namespace std;

class StringPass {
public:

    void stringPass(char *inbound);

};

Пустой файл.cpp проекта.

#pragma once

#include "NewPrototypes.h"

#include <Windows.h>

void StringPass::stringPass(char *inbound)
{
    LPCSTR inBound = inbound;

    MessageBox(NULL, TEXT(inBound), TEXT("Succesful Test"), MB_OK);
}

Когда я запускаю это как самостоятельный проект, он отлично работает.

Заголовок проекта CLR:

#pragma once

#include "C:\Users\Ryan\Documents\Visual Studio 2010\Projects\NewProtoClass\NewProtoClass\NewPrototypes.h"
#include "C:\Users\Ryan\Documents\Visual Studio 2010\Projects\NewProtoClass\NewProtoClass\NewPrototypes.cpp"

using namespace System;

namespace NewPrototypesDll {

    public ref class StringPassWrapper
    {
    public:
        StringPassWrapper();

        void stringPassWrapper(char *inbound);
    private:
        StringPass *stringPassClass;
        // TODO: Add your methods for this class here.
    };
}

Файл.cpp проекта CLR:

#include "stdafx.h"

#include "NewPrototypesDll.h"

#include "C:\Users\Ryan\Documents\Visual Studio 2010\Projects\NewProtoClass\NewProtoClass\NewPrototypes.h"
#include "C:\Users\Ryan\Documents\Visual Studio 2010\Projects\NewProtoClass\NewProtoClass\NewPrototypes.cpp"

NewPrototypesDll::StringPassWrapper::StringPassWrapper()
{
    stringPassClass = new StringPass();
}

void NewPrototypesDll::StringPassWrapper::stringPassWrapper(char *inbound)
{
    stringPassClass->stringPass(inbound);
}

Когда я пытаюсь создать DLL файл, я получаю сообщение об ошибке:

1>C:\Users\Ryan\Documents\Visual Studio 2010\Projects\NewProtoClass\NewProtoClass\NewPrototypes.cpp(11): error C2065: 'LinBound' : undeclared identifier

Я пробовал все, я добавил windows.h в проект, но эта ошибка продолжает появляться. Да, я рассмотрел другие вопросы, касающиеся необъявленных ошибок идентификатора, но ни одна из них не была уникальной для моей ситуации, и ни одно из этих решений не работало. Почему это работает в первой части проекта, но не в другом?

  • 0
    попробуйте заменить '\' на '\\', как "C:\\Users\Ryan\\...
  • 0
    Нет, это не работает, я получил бы другую ошибку, если бы это была проблема синтаксиса с именем пути.
Показать ещё 4 комментария
Теги:

1 ответ

1
Лучший ответ

ТЕКСТ() предназначен для литералов, а не для переменных. Обратите внимание, что в сообщении об ошибке "LinBound" - TEXT добавляет L к фронту своего аргумента в режиме Unicode, а CLR - в режиме Unicode. Либо вызывайте MessageBoxA напрямую, либо используйте MultiByteToWideChar для преобразования в Unicode.

  • 0
    MessageBoxA выдал ту же ошибку, но я получил нужный мне ответ. Несовместимость с кодом. Я найду способ обойти это или другой способ завершить свой проект. Спасибо.
  • 0
    Вы также удалили TEXT () вокруг имени переменной? Это источник ошибки компилятора.
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню