在idl文件里包含 这个dll的头文件 解决重定义问题。在Com对象的FinalConstruct里Load动态库。
在Com对象的FinalRelease里卸载动态库
在Com对象的FinalRelease里卸载动态库
解决方案 »
- 对话框添加SCrollBar出现的倒霉问题- -#求帮助。。。
- StillCap中全局变量g_bOneShot是如何起作用的?
- 已知一个运行进程的exe名,如何向他的主窗口发送WM_CLOSE消息。主窗口名称不知道。
- 【求助】UDP网络传输中recvfrom为什么会被阻塞?
- DirectDraw的问题,24bitRGB和32bitRGB
- 外包 程序模块 上海
- 怎样在一个richedit里面画一个位图?,谢谢
- 我有两个CDialog类,CDialog1,CDialog2,我在1上有个文本框我输入一个数据,然后确定,这时…………
- 各位过来的大虾,找工作要ccna证书好还是mcse好,或高程(有点难)?
- [急求]VC6使用MFC调用通视接口,从内存中读取数据问题
- 请问一下如何遍历飞信主界面里的各种控件?谢谢
- 求一段在界面中打开图片文件并显示的C++程序.
现在重新写个头文件,只包含定义也不行啊~出现下面的错误:
expecting a type specification near "adr_table_type"
#pragma pack(1)
#pragma pack()
这是可以解决的。
传进来的变量的空间是无所谓的,反正调用dll的接口时,还得重新组织参数
传进来的变量的空间是无所谓的,反正调用dll的接口时,还得重新组织参数
[/Quote]
其实他的参数也可以说是一个char*类型的,不知道有没有更好的办法,这样做的话总觉得不是很好。
一般如果要自定义结构体的话直接在idl文件中定义就可以了~但一涉及到DLL怎么就会有这么多问题呢~
伤脑筋啊~
并且在头文件定义中以如下方式定义就可以:
#define DECL2 __stdcall
#ifdef DOEXPORT
#define EXPORTSPEC __declspec (dllexport)
#else
#define EXPORTSPEC __declspec (dllimport)
#endif
typedef int(DECL2 *_load_tool)(char nr,char *dev,adr_table_type *addr); 在COM程序中动态调用就可以了,如:
STDMETHODIMP Cprodave::com_load_tool(byte nr, BSTR dev, adr_table_type *addr, VARIANT *pResult)
{
HMODULE hmod;
lpload_tool load_tool;
hmod = LoadLibrary("W95_s7.dll");
load_tool = (lpload_tool)GetProcAddress(hmod,"load_tool");
if(pResult)
{
VariantInit(pResult);
pResult->vt = VT_I4;
pResult->lVal = load_tool(nr,cdev,addr); }
return S_OK;
}