我在.h文件中有一個類相關聯的可執行代碼:斷點當前不會被擊中。這條線
class Blah
{
public:
Blah(){}
virtual ~Blah(){}
void WriteMessage(bool MessageReceived)
{
if(MessageReceived)
{
cout << "Message Recieved\n";
}
}
};
我試圖找出爲什麼我的代碼不工作,所以我設置一個斷點裏面的條件WriteMessage()
funcition,但只要我開始運行在調試模式下的項目斷點淡出,併爲它提示說:
斷點目前不會受到打擊。
沒有與此行關聯的可執行代碼。
我不知道爲什麼會發生這種情況,因爲其他類的所有其他成員函數在.h文件中實現時都工作得很好。這是什麼造成的?
編輯:好了的要求,這裏是真正的代碼,一個精簡版我的工作:
VimbaBridgeAPI.h(爲.dll文件頭文件)
#pragma once
#ifdef VIMBABRIDGEAPI_EXPORTS
#define VIMBABRIDGEAPI_API __declspec(dllexport)
#else
#define VIMBABRIDGEAPI_API __declspec(dllimport)
#endif
#include "AlCamIncludes.h"
#include "VimbaSystem.h"
////////////////////////////////////////////
// Global Variables ///////////////////////
////////////////////////////////////////////
extern HBITMAP hbit;
extern CEdit* global_filenamehandle;
////////////////////////////////////////////
// Global Flags ///////////////////////////
////////////////////////////////////////////
extern bool imageReady;
extern bool take_picture;
using namespace AVT::VmbAPI;
VIMBABRIDGEAPI_API void BridgedGetImage(FramePtr framepoint, VmbUchar_t** imgDat);
VIMBABRIDGEAPI_API HBITMAP ExternalFrameRecieved(const FramePtr pFrame);
//////////////////////////////////////////////////////////////////////////
////////// MyObserver class ///////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
class VIMBABRIDGEAPI_API MyObserver : public IFrameObserver
{
private:
MyObserver(MyObserver&);
MyObserver& operator=(const MyObserver&);
//class member variables
//BITMAPINFO* pbmi;
CEdit* m_filenameedit;
public:
MyObserver(CameraPtr pCamera) : IFrameObserver(pCamera) {}
virtual ~MyObserver() {}
void FrameReceived (const FramePtr pFrame);
};
注意: IFrameObserver不是我自己寫的,但是FrameReceived函數是一個在IFrameObserver類中聲明的純虛函數。他們的文檔說FrameRecieved每當幀出現時都會被API調用,而且我必須實現這個函數。我測試了這個功能,它的工作原理,但只有當定義在類外(內我得到現在我得到的錯誤)
VimbaBridgeAPI.cpp(代碼對用戶隱藏)
void FrameRecieved(const FramePtr pFrame)
{
DbgMsg(L"Frame Received\n");
////////////////////////////////////////////////////////////////////////
////////// Setup Bitmap ////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//// FILEHEADER ////
BITMAPFILEHEADER* bf = new BITMAPFILEHEADER;
bf->bfType = 0x4d42;
bf->bfSize = 6054400 + 54 + sizeof(BITMAPINFO);
bf->bfOffBits = 54;
//// INFOHEADER ////
BITMAPINFOHEADER* bih = new BITMAPINFOHEADER;
bih->biSize = 40;
bih->biWidth = 2752;
bih->biHeight = -2200;
bih->biPlanes = 1;
bih->biBitCount = 32;
bih->biCompression = 0;
//bi->biSizeImage = 6054400; //not required
bih->biXPelsPerMeter = 2835;
bih->biYPelsPerMeter = 2835;
bih->biClrUsed = 0;
bih->biClrImportant = 0;
//// INFO ////
BITMAPINFO* pbmi = (BITMAPINFO*)alloca(sizeof(BITMAPINFOHEADER) + sizeof(RGBQUAD)*256);
pbmi->bmiHeader.biSize = sizeof (pbmi->bmiHeader);
pbmi->bmiHeader.biWidth = 2752;
pbmi->bmiHeader.biHeight = -2200;
pbmi->bmiHeader.biPlanes = 1;
pbmi->bmiHeader.biBitCount = 8;
pbmi->bmiHeader.biCompression = BI_RGB;
pbmi->bmiHeader.biSizeImage = 0;
pbmi->bmiHeader.biXPelsPerMeter = 14173;
pbmi->bmiHeader.biYPelsPerMeter = 14173;
pbmi->bmiHeader.biClrUsed = 0;
pbmi->bmiHeader.biClrImportant = 0;
//create grayscale color palette
for(int i=0; i<256; i++)
{
pbmi->bmiColors[i].rgbRed = BYTE(i);
pbmi->bmiColors[i].rgbGreen = BYTE(i);
pbmi->bmiColors[i].rgbBlue = BYTE(i);
pbmi->bmiColors[i].rgbReserved = BYTE(0);
}
//// IMAGE DATA ////
VmbUchar_t* imageData = NULL;
BridgedGetImage(pFrame, &imageData);
//////////////////////////////////////////////////////////////////////////
////// Create image that's printed to dialog box /////////////////////////
//////////////////////////////////////////////////////////////////////////
HDC hdc = ::GetDC(NULL);
hbit = CreateDIBitmap(hdc, bih, CBM_INIT, imageData, pbmi, DIB_RGB_COLORS);
//clean up
DeleteObject(bf);
DeleteObject(bih);
DeleteObject(hdc);
}
你的代碼是否曾經調用過'Blah :: WriteMessage'? – us2012 2013-03-04 16:04:57
您可能沒有將WriteMessage與任何處於執行路徑的關聯關聯,因此編譯器會拋出此代碼。簡單地說,這段代碼從未執行過 – SomeWittyUsername 2013-03-04 16:05:48
你可能正在調試發行版本或過時的版本? – 2013-03-04 16:05:58