混用Int與IntPtr導致GetProcAddress始終返回null

 

注意NET某些類型在不同平臺上的長度

NET中用句柄用得最多的是在DLLIMPORT中,混用int與intptr可能會導致某些API聲明在X64平臺中表現不正常,如

[DllImport("Kernel32")]

public static extern IntPtr LoadLibrary(string funcname);

[DllImport("Kernel32")]

public static extern long GetProcAddress(long handle, string funcname);

 

int _tmain(int argc, _TCHAR* argv[])  

{  

    int i = 0;  

    i = sizeof(int);                // x86:4        x64:4  

    i = sizeof(long);           // x86:4        x64:4  

    i = sizeof(void*);          // x86:4        x64:8  

    i = sizeof(short);          // x86:2        x64:2  

    i = sizeof(float);          // x86:4        x64:4  

    i = sizeof(double);         // x86:8        x64:8  

    i = sizeof(int*);           // x86:4        x64:8  

    i = sizeof(WORD);           // x86:2        x64:2  

    i = sizeof(DWORD);          // x86:4        x64:4  

    i = sizeof(LONGLONG);       // x86:8        x64:8  

    i = sizeof(HANDLE);         // x86:4        x64:8  

    i = sizeof(HWND);           // x86:4        x64:8  

    i = sizeof(bool);           // x86:1        x64:1  

    i = sizeof(char);           // x86:1        x64:1  

      

    return 0;  

}  

 

 

 

參考:http://blog.csdn.net/road2010/article/details/21406639

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章