0
我有這些功能的DLL:爲什麼未導出函數的名稱仍然列在MinGW DLL中?
void __declspec(dllexport) foo1()
{
printf("1");
}
void foo2()
{
printf("2");
}
當打開在相關性沃克DLL,僅foo1()
被示爲輸出,其被預期。但是,當我在十六進制編輯器中打開DLL文件時,我注意到字符串_Z4foo2v
,它看起來像一個導出名稱。
但由於foo2()
未標記爲導出,爲什麼此字符串_Z4foo2v
存在?
你有沒有建立與調試信息庫或不--dynamic選項?因爲如果您使用調試信息構建它,它是來自正常符號的符號。嘗試去除共享庫,看看是否有這些符號。 –
這是一個調試版本,是的。我嘗試了發佈版本,'foo2()'確實沒有在那裏列出。謝謝,您可以將其作爲答案發布。 – sashoalm
其實如果你讀'man nm',你會看到'--dynamic'選項,它切換顯示哪些類型的部分(僅動態或全部) –