Domanda

Ho una soluzione che consiste di 3 progetti. Uno è una libreria statica, e due sono file exe basate su console che dipendono e il collegamento con questa libreria. Le loro impostazioni sembrano identici. Costruisco uno di loro:

  

1> ------ Corporatura avviato: Progetto: masksample, Configurazione: Debug Win32 ------
  1> Compilazione ...
  1> Stdafx.cpp
  1> Compilazione ...
  1> masksample.cpp
  1> Compilazione manifesto a risorse ...
  1> Collegamento ...
  1> LINK: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ masksample.exe non trovato o no costruito da l'ultimo anello incrementale; l'esecuzione completa di collegamento
  1> Embedding manifesta ...
  1> masksample - 0 errore (s), 0 warning (s)
  ========== Corporatura: 1 riuscito, 0 fallito, 1 up-to-date, 0 saltato ==========

Poi vado a costruire l'altro:

  

1> ------ Corporatura avviato: Progetto: calibsample, Configurazione: Debug Win32 ------
  1> Compilazione ...
  1> Stdafx.cpp
  1> Compilazione ...
  1> calibsample.cpp
  1> Compilazione manifesto a risorse ...
  1> Collegamento ...
  1> LINK: C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exe non trovato o no costruito da l'ultimo anello incrementale; l'esecuzione completa di collegamento
  1> Creazione della libreria C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.lib e oggetto C: \ Users \ DarekSz \ Praca \ cci \ Debug \ calibsample.exp
  1> Embedding manifesta ...
  1> calibsample - 0 errore (s), 0 warning (s)
  ========== Corporatura: 1 riuscito, 0 fallito, 1 up-to-date, 0 saltato ==========

Perché il linker creare il lib e file .exp questa volta? C'è qualche possibilità di attivare questa funzione ea riposo che ho attivato senza sapere su di esso?

È stato utile?

Soluzione

E 'un po' tardi, ma, forse qualcun altro potrebbe trovare utile questo suggerimento.

A proposito io non sono un guru di C ++ ...

Nella mia soluzione che ho 3 progetti. Uno è un progetto DLL, gli altri sono due progetti app Win32 che fanno riferimento al progetto dll.

Di solito, con la DLL costruito, si hanno anche alcuni altri file generato (.exp, lib) anche per i progetti non dll. Questo può occour quando si include un file .h del progetto dll, nel progetto app, che contiene una classe contrassegnata con __declspec (dllexport).

Per evitare il linker pensate che il vostro stanno cercando di includere alcuni file .h "esportare" usare un'espressione condizionale per definire la macro _declspec.

Esempio:

#if defined(_DO_NOT_EXPORT)
#define DllExport  
#else
#define DllExport __declspec(dllexport)
#endif

Ok, diciamo che avete un MyClass.h nel progetto dll.

nel file .h si potrebbe avere ora:

class DllExport MyClass {
 ...
}

Quando si desidera includere questo file .h in un progetto NON dll, è sufficiente per definire la condizione _DO_NOT_EXPORT

#define _DO_NOT_EXPORT
#include "MyClass.h"

Altri suggerimenti

Questo è normale se una o più funzioni è / sono esportati dal vostro eseguibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top