将C++代码手工移植为JAVA代码 是不是纯扯淡?

本文探讨了一个基于MFC的C++项目向Android平台移植过程中遇到的难点,主要集中在指针类型的转换,包括struct成员指针、类成员变量指针、函数指针、引用参数及返回值以及void指针。作者提出了转换为Java class的策略,并寻求针对函数指针和void指针的解决方案。同时,提到了使用JNI调用C++代码的可能性,但因时间和经验限制未进行尝试。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我现在手头有一份基于MFC架构的C++项目。

目标是:把部分功能代码移植到安卓上。

目前进展:

注:非指针类型的数据的迁移十分简单,不赘述。

  1.    struct 类型内成员变量指针。

   例子:struct Node
    {		
        /// it seems that the member order should be placed according to access frequency
	    NLinkFlowType	m_nCap[NeighborhoodSize];		        
		
        TLinkFlowType	m_tCap; // if m_tCap > 0, then residual capacity of edge source->node is m_tCap
							    // if m_tCap < 0, then residual capacity of edge node->sink is -m_tCap        		        	        


        unsigned int    m_ts;   /// time stamp
        unsigned int    m_dist; /// distance to the terminal


        unsigned int    m_parent : 4;
	    unsigned int   	m_tree : 1; // 0 = source, 1 = sink (if parent!=PARENT_FREE)
        
        unsigned int    m_isDumb: 1;    /// whether participating in the maxflow


        Node*			m_next; // queue of active nodes               


        NLinkFlowType   m_nCapOld[3];    /// for recording the capacity in the modified residual graph               


        NLinkFlowType   m_nCapSub[3];   /// for sub-division    
    };  /// struct Node 
              方案:将struct类型转换为class类型。其中的C++的指针队列部分就忽略掉。

   2.    类中成员变量&函数中成员变量指针

               方案:转换为class类型。 

   3.    函数指针 

                例子:typedef bool (*ProgressCallback)( int numSoFar, void* callbackData );

                方案:目前无。求指教。

   4.    形式参数& 函数返回值

                例子: Node* GetNeib(Node* p, int e)
{
return (Node*)((char*)p + m_nodeShifts[e]);
}

                 方案: 转换为class类型。 

               

    5. void指针

                例子:

                

           void* callbackData

   GridGraph8::GridGraph8(int sizeX, int sizeY, ProgressCallback abortCallback, void* callbackData)
                  : m_nodes(NULL),
                         m_pAuxNodeInfo(NULL), 
                         m_threadsNum(1), 
                         m_abortCallback(abortCallback),
                         m_callbackData(callbackData)
{
Allocate(sizeX, sizeY); 
}

              方案:目前无。求指教。

               


我看网上有说JAVA中用JNI调用C++之类。但是我自己没有做过。不敢尝试,时间也不那么允许。好久没有给导师提交阶段进展报告了。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值