代码之家  ›  专栏  ›  技术社区  ›  dirbacke

错误:全局作用域没有GetUrl

  •  0
  • dirbacke  · 技术社区  · 14 年前

    我的C++ DLL有一个新问题…我尝试导出整个类,而不是只导出一个方法。但是程序现在不想编译,因为全局范围没有GetUrl

    #define ConnectMe __declspec( dllexport )

    命名空间连接https 类连接 { void GetUrl(char*url,unsigned int bufferLength); };
    下面是我的UrlConnector.cpp中没有编译的部分:

    #include "UrlConnector.h"
    #include "MyConnectionClass.h"
    #include 
    using namespace std;

    命名空间连接https { { 字符串响应=initSec.GetResult(); strncpy_s(url,bufferLength,response.c_str(),response.length()); } } 现在,我想能够从这个创建一个DLL,我想做一个测试程序来调用一个DLL中的类和GetUrl方法。我使用VisualStudio 2010与Visual C++ DLL。
    我也读过 this from the MSDN this tutorial 好吧,但我好像没法让它工作! 我非常感谢你的帮助!

    1 回复  |  直到 14 年前
        1
  •  1
  •   robev    14 年前

    除非我弄错了,否则你好像没有给你的班级起名字。 你让ConnectMe不是一个类名而是一个宏来导出你的类,但是你的类应该有一个名称

    也许可以试试

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

    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());
    }