作爲從HP到AIX的應用程序遷移的一部分,我面臨着一個獨特的問題。 以下模擬代碼在HP和AIX中產生不同的結果。在AIX中啓動C++可執行文件時出錯
LIBRARY.C **
#include <stdio.h>
#include "mylib.h"
int libimgclientFNXXX()
{
int check = 100;
check = FileNetDeleteDoc(check);
return check;
}
int libimgclientFN()
{
int check = 1;
printf("In lib ");
return check;
}
* main_func.C *
#include <stdio.h>
int libimgclientFN();
int libimgclientFNXXX();
int main()
{
int one = 0;
if (1 == 1)
{
one = libimgclientFN();
}
printf("\n The status is %d \n", one);
}
* mylib.h **
extern int FileNetDeleteDoc (int);
注意函數libimgclientFNXXX()不會被調用。 我make文件是如下:
xlC -c -g library.C -o library.o -I./
xlC -G -qmkshrobj -o libImgClient.so library.o
xlC -c -g -qpic=small main_func.C -o main_func.o
xlC -brtl main_func.o -L. -lImgClient -o TST
當我運行TST,我得到以下加載錯誤
$ TST
exec(): 0509-036 Cannot load program TST because of the following errors:
rtld: 0712-001 Symbol FileNetDeleteDoc__Fi was referenced
from module ./libImgClient.so(), but a runtime definition
of the symbol was not found.
即使功能libimgclientFNXXX()不會被調用,還有未解決的錯誤。
與惠普內置的完全相同的代碼工作正常,沒有錯誤。
任何輸入表示讚賞。
感謝,
歡迎來到SO。正如您所看到的,人們已經編輯了您的問題,以便於閱讀和搜索。 –