0
我有一個C++代碼已經被其他人連接到一個可視基本用戶界面。這裏是連接C++到Visual Basic的功能代碼之一:使用輸入和輸出參數在Java中調用C++函數
extern "C" void PASCAL EXPORT RCS(stAct* act,stResourceDirectory* resDir, stCalendar* calendar, short numOfAct, short numOfRes, short numOfCal, int nDataDate)
{
Network network;
short id;
Activity* p_act;
node<Activity>* p_node;
// Setting
network.create_calendars (calendar, numOfCal);
network.set_data_date (nDataDate);
set_activity(network, act, numOfAct);
// only for id, duration, and description
set_resource(network, act, resDir, numOfAct, numOfRes);
// create resource profile and add required resource for every activity
network.CPM();
p_node = network.get_network_head_p();
while (p_node != NULL) {
p_act = p_node->refer_data();
id = p_act->get_ID();
act[id].TF_in_CPM = p_act->get_TF_min();
act[id].FF_in_CPM = p_act->get_FF();
act[id].EST_in_CPM = p_act->get_EST();
act[id].EFT_in_CPM = p_act->get_EFT();
act[id].LST_in_CPM = p_act->get_LST();
act[id].LFT_in_CPM = p_act->get_LFT();
p_node = p_node->get_link();
}
network.RCS();
p_node = network.get_network_head_p();
while (p_node != NULL) {
p_act = p_node->refer_data();
id = p_act->get_ID();
act[id].TF_in_RCS = p_act->get_TF_min();
act[id].FF_in_RCS = p_act->get_FF();
act[id].EST_in_RCS = p_act->get_EST();
act[id].EFT_in_RCS = p_act->get_EFT();
act[id].LST_in_RCS = p_act->get_LST();
act[id].LFT_in_RCS = p_act->get_LFT();
p_node = p_node->get_link();
}
}
我想更換使用Java GUI的Visual Basic中的一部分,它似乎混淆了我寫的連接代碼。有沒有人可以通過JNA/SWIG/Runtime或其他任何你認爲會更容易更好的方法來調用三個C++函數,並傳遞參數給本地方法並從中接收結果?