Ahoj,
používám knihovnu generovanou rozhraním IDL, jedná se o (OPC Server) pokud tento hlavičkový soubor používám pouze v "jednom" soubor tak je všechno v pořádku:
př:
///////////////////////////// subor opcmm.h
#pragma once
#include "resource.h"
#include "opc_h.h"
///////////////////////////// subor opcmm.cpp
#include "stdafx.h"
#include "opcmm.h"
// objekty z kinhovny opc_h.h
IMalloc *g_pIMalloc;
IOPCServer *g_pOPC; //interface of server object
IOPCItemMgt *g_pItemMgt; //interface of group object
OPCITEMRESULT *g_pItemResult; //special datatype for item
OPCHANDLE g_GrpSrvHandle;
v tomto přídě není žádný problém jemožno přistupovat ke všem objektům knihovny
Ale pokd vytvořím třídu a přidám do té třídy odkaz na knihovnu opcmm.h nebo opc_h.h je problém
//////////////// opcclient.h
#include "opcmm.h"
#pragma once
// COpcClient command target
class COpcClient : public CObject
{
public:
COpcClient();
virtual ~COpcClient();
bool connect(CString opcname);
CAtlArray<CString> items;
private:
bool mComCreaed;
IMalloc *g_pIMalloc;
IOPCServer *g_pOPC; //interface of server object
IOPCItemMgt *g_pItemMgt; //interface of group object
OPCITEMRESULT *g_pItemResult; //special datatype for item
OPCHANDLE g_GrpSrvHandle;
};
//////////////// opcclient.cpp
/ opccobj.cpp : implementation file
//
#include "stdafx.h"
#include "opcClinet.h"
#include "opcmm.h"
// opccobj
COpcClient::COpcClient()
{
HRESULT r1;
// General COM initialization...
g_pIMalloc =NULL;
g_pOPC = NULL;
g_pItemMgt =NULL;
g_pItemResult =NULL;
g_GrpSrvHandle = 0;
items.RemoveAll();
r1 = CoInitialize(NULL);
_ASSERT(r1);
.
.
.
Dostane se mě toto výpisu
OpcClient.obj : error LNK2001: unresolved external symbol _IID_IOPCServer
C:\Zdroje\CPP_Visual_moje\opcmm\Debug\opcmm.exe : fatal error LNK1120: 1 unresolved externals