1
Windows에서 Linux로 응용 프로그램을 이식하고 있습니다. Windows 버전에서는 그러한 콜백 typedef void (__stdcall * OrdersCallback)(orders*);
을 정의했습니다. 그렇다면 다음과 같이 구현합니다.windown : __stdcall을 대체하는 방법?
void __stdcall OrdersHandler(orders* param) {
Processor::Instance().EnqueueFutOrderbook(param);
};
그리고이 응용 프로그램의 포인터를 정적으로 링크 된 라이브러리에 전달하여 라이브러리가 데이터를 다시 전달할 수 있도록합니다.
그러나 리눅스에서는이 줄이 컴파일되지 않습니다 : typedef void (__stdcall * OrdersCallback)(orders*);
. 어떻게 콜백 선언과 구현을 업데이트하여 리눅스에서 컴파일해야합니까?
'#define __stdcall' (즉 비어 있음)이있는 Linux 개발 환경을 기대합니다. 그리고 그렇지 않다면 컴파일 스위치를 사용하여 사실이되게합니다. 대량 검색 및 교체가 필요하지 않습니다. –
@AndrewLazarus 좀 더 적절한 대답이지만, 리눅스에서 호출 규칙을 강제하는 방법을 알고 있다고 생각하지 않습니까? 그게 내가 현재 붙어있어 실제로 현실에서 OP에 대한 "정확한"답변입니다 ... – XtrmJosh