새 애플리케이션에 과부하가 걸리거나 삭제되는 애플리케이션을 포함하는 VxWorks7 이미지 프로젝트 (VIP)를 만들려고합니다. 다운로드 가능한 커널 모듈 (DKM)로 VIP 및 애플리케이션을 앱과 별도로 빌드하면 대상에서 VIP를 부팅하고 Workbench4에서 App DKM을 별도로 다운로드하여 정상적으로 빌드되고 실행됩니다. 그러나 나는 여러 새로운에 대한 오류를 정의하고 다음과 같이 빌드하는 동안 워크 벤치에서 운영자를 삭제 얻을 단일 부팅 VIP로 함께 VIP와 DKM를 구축하려고하면 :Gnu 컴파일러를 사용하여 VxWorks 7에서 새/삭제 연산자를 오버로드하는 방법
C:/BW/Vehicle/builds/cx20X0Up32BitDebugVsb/krnl/gnu_standard\libgnucplus.a(_x_gnu_delaop.o): In function `operator delete[](void*)':
(.text+0x0): multiple definition of `operator delete[](void*)'
C:/BW/Vehicle/builds/Vehicle/cx20X0Up32BitDebugVsb_SANDYBRIDGEgnu/Vehicle_partialImage/Debug/Vehicle_partialImage.o:C:/BW/Alcatraz/Vehicle/src/IRL/Util/heap.cpp:886: first defined here
C:/BW/Vehicle/builds/cx20X0Up32BitDebugVsb/krnl/gnu_standard\libgnucplus.a(_x_gnu_delop.o): In function `operator delete(void*)':
(.text+0x0): multiple definition of `operator delete(void*)'
C:/BW/Vehicle/builds/Vehicle/cx20X0Up32BitDebugVsb_SANDYBRIDGEgnu/Vehicle_partialImage/Debug/Vehicle_partialImage.o:C:/BW/Alcatraz/Vehicle/src/IRL/Util/heap.cpp:841: first defined here
C:/BW/Vehicle/builds/cx20X0Up32BitDebugVsb/krnl/gnu_standard\libgnucplus.a(_x_gnu_newaop.o): In function `operator new[](unsigned int)':
(.text+0x0): multiple definition of `operator new[](unsigned int)'
C:/BW/Vehicle/builds/Vehicle/cx20X0Up32BitDebugVsb_SANDYBRIDGEgnu/Vehicle_partialImage/Debug/Vehicle_partialImage.o:C:/BW/Alcatraz/Vehicle/src/IRL/Util/heap.cpp:813: first defined here
C:/BW/Vehicle/builds/cx20X0Up32BitDebugVsb/krnl/gnu_standard\libgnucplus.a(_x_gnu_newop.o): In function `operator new(unsigned int)':
(.text+0x0): multiple definition of `operator new(unsigned int)'
C:/BW/Alcatraz/Vehicle/builds/Vehicle/cx20X0Up32BitDebugVsb_SANDYBRIDGEgnu/Vehicle_partialImage/Debug/Vehicle_partialImage.o:C:/BW/Alcatraz/Vehicle/src/IRL/Util/heap.cpp:808: first defined here
collect2.exe: error: ld returned 1 exit status
윈드 리버 지원하기 위해 솔루션을 제공 new 및 delete 연산자가 오버로드되는 소스 파일의 다음 선언. 이것은 새로운/del 연산자의 라이브러리 버전을 생략하기 위해 컴파일러/링커에 신호를 보낸다.
int ___x_gnu_newaop_o = 1;
int ___x_gnu_newop_o = 1;
int ___x_gnu_delaop_o = 1 ;
int ___x_gnu_delop_o = 1;
이 작업을 수행 할 때도 위와 같이 동일한 다중 정의 오류가 발생하며 WindRiver 지원에는 현존하는 제안이 없습니다. 누구든지 Gnu 컴파일러를 사용하여 VxWorks7에서 global :: new 및 :: delete를 오버로드하려고 시도한 경험이 있습니까?
다음은 WindRiver Support 66370에 대한 링크입니다. 공개 액세스 권한이 있는지 확실하지 않습니다.