主程序中声明一个函数指针 然后传入Dll中,由Dll调用
Dll中声明如下:
typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);_declspec(dllexport) int InitSys(GetDllCmd pFunc)
{
}主程序中声明如下:
void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}__declspec(dllimport) int InitSys(GetDllCmd);调用:
InitSys(GetDllCmd);这种调用方法是错在哪里啊 高手指点下
Dll中声明如下:
typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);_declspec(dllexport) int InitSys(GetDllCmd pFunc)
{
}主程序中声明如下:
void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}__declspec(dllimport) int InitSys(GetDllCmd);调用:
InitSys(GetDllCmd);这种调用方法是错在哪里啊 高手指点下
解决方案 »
- MessageBox 会产生你意想不到的“副作用”?
- 全局键盘钩子的问题
- 关于自定义消息的问题,是不是只有CWnd派生类的成员函数才能被绑定为消息处理函数?
- 分割窗口的问题
- 求助 <directshow实务精选>中AVCAP编译错误
- 关于RepositionBars函数的问题(论个清楚,论个明白)
- 是不是只有能编译通过的程序才能debug
- 用CNCOMM类做的一个串口测试,发送数据过快时,窗口上的操作很慢,什么原因?
- 看到一些软件,如果工具条上的按钮太多,就在最右边显示一个下拉式的菜单,里面包含有没有被显示出的工具按钮?我知道用ReBar,但哪位老
- 如何用Wininet编写异步FTP 要求可以遍历服务器
- 单文档程序怎么打开或复制doc文档的内容?
- Windows编程启示录 计时框的困惑
error C2440: “初始化” : 无法从“void (__stdcall *)(char *)”转换为“int”
是不是没有加typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);
void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}__declspec(dllimport) int InitSys(GetDllCmd);调用:
InitSys(GetDllCmd);这样声明不对
隐式加载:
void CALLBACK GetDllCmdFun(char * a_sCmd)
{
...;
}
InitSys(GetDllCmdFun);
__declspec(dllimport) int InitSys(GetDllCmd);
这个就是include头文件里的
extern typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);
__declspec(dllimport) int InitSys(GetDllCmd pFunc);
typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);
__declspec(dllimport) int InitSys(GetDllCmd pFunc);
extern typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);
__declspec(dllimport) int InitSys(GetDllCmd pFunc);exe的声明和调用
void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}调用:
InitSys(GetDllCmd);----------------------------------------------------------------------------
dll声明
typedef void (CALLBACK * GetDllCmd) (char * a_sCmd);_declspec(dllexport) int InitSys(GetDllCmd pFunc)
{
}
error C2470: “GetDllCmd” : 看起来像函数定义,但没有形参表;跳过明显的函数体
error C2275: “GetDllCmd” : 将此类型用作表达式非法
typedef void (CALLBACK * GetDllCmda) (char * a_sCmd);
__declspec(dllimport) int InitSys(GetDllCmda pFunc);exe的声明和调用
void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}调用:
InitSys(GetDllCmd);
__declspec(dllimport) int InitSys(GetDllCmda pFunc);c文件:void CALLBACK GetDllCmd(char * a_sCmd)
{
...;
}
InitSys(GetDllCmd);
dll的不变