![](/img/trans.png)
[英]Undefined symbols for architecture arm64 when compiling c++ and assembly code on MacOS
[英]Disable Warnings when compiling ARM64 C++? Visual Studio 2019
我在項目的 kernel 空間工作(在 ARM64 中構建),並且無法為我的項目禁用特定警告。 該警告被視為錯誤並且不允許我編譯我的項目,因此您可以想象它非常煩人。
警告是錯誤代碼 C4244:“=”從“ULONG_PTR”轉換為“ULONG”,可能會丟失數據。 我曾嘗試使用 #pragma disable warning 4244 但這不起作用,我在我的項目中關閉了“將警告視為錯誤”設置,我在警告級別項目設置中“關閉了所有警告”。
我似乎已經在陽光下嘗試了一切,但我仍然無法編譯,有什么解決方案嗎? 我將在下面發布引發錯誤的代碼,以便有人可以修復,但是關閉警告同樣好:)
ULONG_PTR memory::get_process_id_by_name(PEPROCESS start_process, const char* process_name)
{
PLIST_ENTRY active_process_links;
PEPROCESS current_process = start_process;
do
{
PKPROCESS kproc = (PKPROCESS)current_process;
PDISPATCHER_HEADER header = (PDISPATCHER_HEADER)kproc;
LPSTR current_process_name = (LPSTR)((PUCHAR)current_process + IMAGE_FILE_NAME);
if (header->SignalState == 0 && strcmp(current_process_name, process_name) == 0)
{
return (ULONG_PTR)PsGetProcessId(current_process); //warning occurs here
}
active_process_links = (PLIST_ENTRY)((PUCHAR)current_process + ACTIVE_PROCESS_LINKS_FLINK);
current_process = (PEPROCESS)(active_process_links->Flink);
current_process = (PEPROCESS)((PUCHAR)current_process - ACTIVE_PROCESS_LINKS_FLINK);
} while (start_process != current_process);
return 0;
}
根據您上一個問題中的評論,警告應出現在調用get_process_id_by_name
function 的位置,而不是在get_process_id_by_name
function 內。 因為現在 function 內部沒有ULONG_PTR
到ULONG
的轉換。
這是#pragma warning
的文檔。
這是固定代碼:
#pragma warning(push)
#pragma warning(disable: 4305)
#pragma warning(disable: 4309)
void YourFunction()
{
/* ... */
if (ioctl == NF_GET_PROCESS_ID)
{
PNF_PROCESS_ID_REQUEST process_id_request = (PNF_PROCESS_ID_REQUEST)irp->AssociatedIrp.SystemBuffer;
process_id_request->process_id = memory::get_process_id_by_name(IoGetCurrentProcess(), process_id_request->process_name);
if (process_id_request->process_id) {
status = STATUS_SUCCESS;
}
bytes_io = sizeof(NF_PROCESS_ID_REQUEST);
DbgPrintEx(0, 0, " NF_GET_PROCESS_ID\n");
}
/* ... */
}
#pragma warning(pop)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.