buon giorno a tutti tento di esporre il mio problema:
io importo in un .h del mio progetto una dll esterna
#import "../../../../Apps/Publish/afsdk.dll"
che al suo interno ha dei metodi che devo utilizzare.
uno di questi è:
AFSDK::_ManageConnectionsPtr m_pArxConnection;
che lo instanzio in questo modo
VERIFY(SUCCEEDED(m_pArxConnection.CreateInstance("AFSDK.ManageConnections")));
per usare il suo metodo
m_pArxConnection->GetConnectionString();
ho la necessità di renderlo globale per usarlo in più .cpp
allora in un .h ho definito
extern TB_EXPORT AFSDK::_ManageConnectionsPtr m_pArxConnection;
e in un .cpp la sua inizializzazione
VERIFY(SUCCEEDED(m_pArxConnection.CreateInstance("AFSDK.ManageConnections")));
fin qui tutto ok.
cosa succede però:
eseguo la mia applicazione come prima cosa nel primo .cpp vado a instanziare il metodo della dll e fin qui tutto ok.
quando nel secondo .cpp testo il puntatore tutto ok ha lo stesso valore del primo
quando però sempre nel secondo .cpp lo vado ad usare mi ritrovo con un eccezione di accesso in scrittura...
succede perchè "impegnato" dal metodo che l'ha instanziato?
succede perchè l'area a cui fa riferimento il puntatore nel frattempo ha cambiato contenuto?
non posso riutilizzare il puntatore in altre aree del programma?
non so che pesci pigliare, se qualcuno può aiutarmi gliene sarei infinitamente grato.