2015-09-07 62 views
1

我想用DDX_TEXT類型DBTIMESTAMP的成員變量:帶有DBTIMESTAMP變量的DDX_Text,我需要引用哪個庫?

class CSerialView : public CFormView 
{ 
    DECLARE_DYNCREATE(CSerialView) 
    //..... 
public: 
    DBTIMESTAMP m_ProductionDate; // read from OLEDB consumer class 
    //..... 
protected: 
    virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support 
    //...... 
} 
void CSerialView::DoDataExchange(CDataExchange* pDX) 
{ 
    CFormView::DoDataExchange(pDX); 
    DDX_Text(pDX, IDC_PRODUCTIONDATE, m_ProductionDate); 
} 

編譯是精細,DDX_Text使用的語法智能感知上市,所以看來微軟某處定義了這個功能,但是連接保釋金出錯LNK2019。見附圖。這裏列出的

enter image description here

生成輸出:

1>SerialView.obj : error LNK2019: unresolved external symbol "void __stdcall DDX_Text(class CDataExchange *,int,struct tagDBTIMESTAMP &)" ([email protected]@[email protected]@[email protected]@@Z) referenced in function "protected: virtual void __thiscall CSerialView::DoDataExchange(class CDataExchange *)" ([email protected]@@[email protected]@@Z) 
1>c:\dev\projects\HCPSOrders\Debug\HCPSOrdersApp.exe : fatal error LNK1120: 1 unresolved externals 

我不是在尋找LNK2019也不LNK1120的解釋,我知道它們的含義。我想解決這個特定的錯誤實例:我錯過了哪些引用?

+0

是什麼讓你認爲結構是由['DDX_Text'(https://msdn.microsoft.com/en-us/library/a1xttfdt支持。 ASPX)?你會如何期待它的工作?你甚至知道['DDX_Text'](https://msdn.microsoft.com/en-us/library/a1xttfdt.aspx)函數的用途嗎? –

+0

是的,我做到了。甚至沒有列出特定的重載,儘管有一個使用COleDateTime。也許我應該去那個,因爲它可以從DBTIMESTAMP構建。 – Bart

+0

是的,我很清楚DDX_Text的目的是什麼。沒有必要就此話題講課或試圖貶低我。 還有一件事,我想使用的重載是由Intellisense建議的,所以或許它不會被認爲支持它。 – Bart

回答

-1

這解決了這個問題對我來說:

DDX_Text(pDX, IDC_PRODUCTIONDATE, COleDateTime(m_ProductionDate)); 
+0

雖然它只是一種方式(從變量讀取)。 – Bart

+3

根本不是一個好主意,因爲'DDX_Text'接受非const引用的第三個參數,並且構造一個臨時對象,一旦'DDX_Text'函數返回就會被銷燬。使用對被破壞的對象的引用會導致未定義的行爲。 –

+0

函數調用返回後,我將不再使用該引用。由於數據僅僅是隻讀的,這不是問題。我的代碼有條件地在pDX-> m_bSaveAndValidate == false上執行。你是對的,如果我想從我的CFormView類更新m_ProductionDate會有問題。更新的對象將被銷燬。 – Bart