假设我想导出一组在C ++对象上运行的函数,here在tenfour的答案中描述了一个选项。请参阅下面的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();
}
}