使用MFC构建的程序框架,程序名SplitterWindows
(1)在SplitterWindowsView.h
void CSplitterWindowsView::actions() ; 
(2)在SplitterWindowsView.cpp
//视图的初始化
void CSplitterWindowsView::OnInitialUpdate() 

  .......
 WTuniverse_setactons(actions);//<注>:WTuniverse_setactions()是用C编写的仿真程序包; .......
}
void CSplitterWindowsView::actions()
{}编译时出现:
error C2664: 'WTuniverse_setactions' : cannot convert parameter 1 from 'void (void)' to 'void (__cdecl *)(void)'

解决方案 »

  1.   

    WTuniverse_setactons难道需要一个类的成员函数指针?改成静态的呢?
      

  2.   

    类成员的函数都是thiscall,需要使用静态函数
      

  3.   

    WTuniverse_setactons(CSplitterWindowsView::actions);
      

  4.   

    调用约定,可以参考:
    http://dev.csdn.net/develop/article/25/25141.shtm
    http://dev.csdn.net/develop/article/25/25142.shtm
    http://dev.csdn.net/develop/article/25/25143.shtm
    http://dev.csdn.net/develop/article/31/31511.shtm
    http://dev.csdn.net/develop/article/52/52485.shtm
      

  5.   

    WTuniverse_setactons申明时前加extern "C"
      

  6.   

    不行啊!!
    在CSplitterWindowsView.h中定义 static CSplitterWindowsView::actions();
    若在CSplitterWindowsView.cpp,不为CSplitterWindowsView::actions函数添加任何代码可以编译通过。
    但若在CSplitterWindowsView::actions中添加WTK软件包的函数,就出现错误提示:      D:\Personal\My Documents\07.31-08.06\08.14-08.20\(遇到意想不到的情况)SplitterWindows\SplitterWindowsView.cpp(152) : error C2597: illegal reference to data member 'CSplitterWindowsView::measurexform' in a static member function
    解释:'CSplitterWindowsView::measurexform' 中的measurexform变量是在CSplitterWindowsView.h中定义的--measurexform=WTxformnode_new(root)(该函数也是软件包的用C开发的函数;
    请教高手,还有办法没.热切期待您的援助........