从动态dll导出全局对象与从客户端调用构造函数

时间:2014-07-05 16:27:07

标签: c++ dll

假设我想导出一组在C ++对象上运行的函数,heretenfour的答案中描述了一个选项。请参阅下面的Employee对象周围的C样式界面。

如果我只对在dll端创建的全局Employee对象进行操作,是否可以在不将Employee *指针传递给每个函数的情况下执行此操作?以下如何改变?

我假设客户端没有头文件并且在运行时明确链接到DLL。

extern "C"
    {
        __declspec(dllexport) Employee* employee_Construct()
        {
            return new Employee();
        }

        __declspec(dllexport) void employee_Free(Employee* e)
        {
            delete e;
        }

        __declspec(dllexport) void employee_SetFirstName(Employee* e, char* s)
        {
            e->SetFirstName(std::string(s));
        }

        __declspec(dllexport) void employee_SetLastName(Employee* e, char* s)
        {
            e->SetLastName(std::string(s));
        }

        __declspec(dllexport) int employee_GetFullName(Employee* e, char* buffer, int bufferLen)
        {
            std::string fullName = e->GetFullName();
            if(buffer != 0)
                strncpy(buffer, fullName.c_str(), bufferLen);
            return fullName.length();
        }
    }

0 个答案:

没有答案