Ошибка: глобальная область не имеет GetUrl - PullRequest
0 голосов
/ 28 октября 2010

У меня новая проблема с моей C ++ DLL ... Я попытался экспортировать весь класс вместо одного метода.Но программа не хочет сейчас компилироваться, потому что в глобальной области видимости нет GetUrlВот мой "UrlConnector.h": &#035;define ConnectMe __declspec( dllexport )</p> <p>namespace ConnectHttps { class ConnectMe { void GetUrl(char *url, unsigned int bufferLength); }; } и вот часть моего UrlConnector.cpp, который не компилируется: &#035;include "UrlConnector.h" &#035;include "MyConnectionClass.h" &#035;include using namespace std;</p> <p>namespace ConnectHttps { void ConnectMe::GetUrl(char* url, unsigned bufferLength) { MyConnectionClass initSec; string response = initSec.GetResult(); strncpy_s(url, bufferLength, response.c_str(), response.length()); } } Теперь я хотел бы иметь возможность создать DLL из этого, и я хотел бы сделать тестовую программу для вызова класса и метода GetUrl из библиотеки DLL.Я использую Visual Studio 2010 с Visual C ++ DLL.Мне также удалось прочитать это из MSDN и этого учебника , но я просто не могу заставить его работать!Буду очень признателен за любую помощь!

1 Ответ

1 голос
/ 28 октября 2010

Если я не ошибаюсь, вы, кажется, не даете своему классу имя.Вы сделали ConnectMe не именем класса, а макросом для экспорта вашего класса, но у вашего класса должно быть имя

Возможно, попробуйте

#define EXPORT_IT __declspec( dllexport )

namespace ConnectHttps
{
    class EXPORT_IT ConnectMe
    {
        void GetUrl(char *url, unsigned int bufferLength);
    };
}

Также я не уверен на 100% в этом, потому чтоУ меня нет доступа к компилятору в данный момент, но набираю:

namespace ConnectHttps {
    ...
}

В вашем файле .cpp не правильно.Вместо этого вы должны иметь:

void ConnectHttps::ConnectMe::GetUrl(char* url, unsigned bufferLength)
{
    MyConnectionClass initSec;
    string response = initSec.GetResult();
    strncpy_s(url, bufferLength, response.c_str(), response.length());
}
...