我在構建我的調試項目時出現了一個奇怪的問題。我搜索了網頁,但不幸的是我還沒有找到任何線索。0xC0000005:訪問衝突寫入位置0x00000000
我想在我的控制檯應用程序項目中加載一個dll。我的DLL有幾個函數,我只想調用FUNC1來檢查這個函數是否正常工作。
在我的DL FUNC1的聲明是:
int FUNC1 (char *inVal, int *retVal)
我已成功加載的dll在我的控制檯應用程序,我稱之爲有如下函數指針的FUNC1:
int main()
{
HINSTANCE testInstance;
testInstance = LoadLibrary("Path\\to\\my.dll");
typedef int (WINAPI *FUNC1Ptr)(char *inVal, int *retVal);
if(testInstance == NULL)
{
printf("The dll is not loaded, Please check the path!\n");
}
else
{
printf("The dll is loaded successfully!!");
}
FUNC1Ptr FUNC1Lnk = (FUNC1Ptr)GetProcAddress(testInstance,"FUNC1");
if (!FUNC1tLnk)
{
FreeLibrary(testInstance);
printf("Error in getting function address!!\n");
}
else
{
int *ret = 0;
char *PIN = NULL;
PIN = "test";
int retVal1 = FUNC1Lnk(PIN, ret);
}
return 0;
}
PS。違反稱爲free.c文件:使用指針
retval = HeapFree(_crtheap, 0, pBlock);
if (retval == 0)
{
errno = _get_errno_from_oserr(GetLastError());
}
}
你用相同的調用代碼測試,但沒有* *調用LoadLibrary? (即直接鏈接到一個函數的目標文件) – 2013-02-09 11:56:10
還沒有,我會檢查它,並隨時通知你 – A23149577 2013-02-09 11:59:18
@AntonKovalenko:我檢查了它,它沒有loadlibrary工作正常! – A23149577 2013-02-11 14:29:53