我用常规DLL方式创建了一个工程,用于对一些xml文件解析的封装,返回解析后的数据。因为数据比较复杂。 例如:
Dll 端:
class CData {
wstring str1;
wstring str2;
}; class __declspec(dllexport) CXMLHelper {
bool parsexml( const _bstr_t xmlFilePath, vector<CData>& returnData ); // 要导出的函数
}; client 端使用:
vector<CData> data;
CXMLHelper xmlHelper;
xmlHelper.parsexml( _bstr_t("c:\\test.xml"), data ); data 怎么也返回不了。如我以上所说的功能,应该如何实现,从DLL中返回一个自定义类的vector数据
想用这个dll 写了一个class,
Dll 端:
class CData {
wstring str1;
wstring str2;
}; class __declspec(dllexport) CXMLHelper {
bool parsexml( const _bstr_t xmlFilePath, vector<CData>& returnData ); // 要导出的函数
}; client 端使用:
vector<CData> data;
CXMLHelper xmlHelper;
xmlHelper.parsexml( _bstr_t("c:\\test.xml"), data ); data 怎么也返回不了。如我以上所说的功能,应该如何实现,从DLL中返回一个自定义类的vector数据
想用这个dll 写了一个class,
解决方案 »
- ADO连接数据库问题,总出现“无效指针”错误
- 如何让对话框提示隔一定时间循环显示?
- VC MFC 程序 任务管理器看到内存增加 但是用VLD检测内存没有泄露
- “unresolved external symbol _main”这样的错误,不知道该怎么解决?
- 请问,VC中字符串“008D64B4”怎样转换成16进制数0x008D64B4
- 面试几家公司都失败了,自信心备受打击啊
- 关于combo box组合框控件的问题?
- 新手的细节问题 关于"\"
- 高手救我,!!将程序加到服务里,准备屏蔽任务栏,可开机无法屏蔽
- ¥¥¥¥¥¥¥¥---各位朋友,帮帮我吧,我被卡住了---!!!!!!!
- 如果不使用对话框资源的话怎么创建一个模态对话框?
- 关于COM的参数传递问题
#define DLLAPI AFX_EXT_CLASS
#else
#define DLLAPI _declspec(dllimport)
#pragma comment(lib, "./eCopyXMLAssistant.lib")
#endifclass DLLAPI CXMLAssistant
{
public:
class CDMSRootFolder
{
public:
wstring m_ID; // 文件夹ID
wstring m_Name; // 文件夹名
wstring m_Permission; // 文件夹权限
wstring m_RootID; // 文件夹RootID
wstring m_ParentID; // 文件夹ParentID
wstring m_Type; // 文件夹类型(public/private)
wstring m_hasSubFolder; // 文件夹是否有子文件夹
public:
CDMSRootFolder( const wstring& ID = _T(""),
const wstring& Name = _T(""),
const wstring& Permission = _T(""),
const wstring& RootID = _T(""),
const wstring& m_ParentID = _T(""),
const wstring& Type = _T(""),
const wstring& hasSubFolder = _T("") );
CDMSRootFolder( const CDMSRootFolder& DMSRootFolder );
CDMSRootFolder& operator=( const CDMSRootFolder& DMSRootFolder );
~CDMSRootFolder();
};public:
CXMLAssistant(void);
~CXMLAssistant(void);
// 解析客户发送获取Root级folder请求的XML
bool _stdcall ParseRootFolderXML(_bstr_t& xmlString,
vector<CDMSRootFolder>* pvtDmsRootFolder);
};client (基于atl) 调用部分 vector<CXMLAssistant::CDMSRootFolder> vtDmsRootFolder;
if ( XMLAssistant.ParseRootFolderXML( _bstr_t(ReturnInfo.Copy()),
&vtDmsRootFolder ) == true )
{
int count = vtDmsRootFolder.size();
for (int ii = 0; ii < count; ii++ )
{
wstring str = vtDmsRootFolder[ii].m_ID;
wstring name = vtDmsRootFolder[ii].m_Name;
::MessageBox(NULL, str.c_str(), name.c_str(), MB_OK );
}
} => 在这个时会出错