Probablemente sea una pregunta simple, pero solo tengo Linux para probar este código donde no se necesita __declspec (dllexport). En el código actual __declspec (dllexport) está delante de todos los archivos en el archivo .h pero justo al frente de como el 50% de las funciones en el archivo cpp, así que me pregunto si realmente se necesitan en el archivo cpp.Es necesario __declspec (dllexport) en los archivos cpp
Respuesta
No, solo es necesario en el encabezado.
Aquí hay un link con más información.
Ampliando lo que estaba diciendo Vinay, a menudo he visto una macro definida
#if defined(MODULENAME_IMPORT)
#define EXPORTED __declspec(dllimport)
#elif defined(MODULENAME_EXPORT)
#define EXPORTED __declspec(dllexport)
#endif
Luego, en su cabecera que haces
establezca las define en consecuencia en la configuración del proyecto para el proyecto haciendo la importación/exportación.
No, no es necesario en el archivo cpp. Solo en la declaración se requiere.
Por ejemplo, si tengo una clase CMyClass. Si quiero exportar este continuación .h tendrá
código .h servidor
__declspec (dllexport) CMyClass { };
En el código de cliente, es decir, que utiliza esta clase que tiene que reenviar declarar la clase como
El código de cliente
__declspec (dllimport) CMyClass;
// código para utilizar la clase
Es posible utilizar en el archivo .cpp cuando se haya plantilla de código y crear instancias que está en el archivo .cpp entonces usted necesita para exportar la definición cuando se crea una instancia. Pero incluso en este caso, he visto que hacer en .h también funciona. En Windows puede usar dumpbin.exe/exports * .dll para ver qué firmas se exportan, también hay una utilidad similar en Linux. Esto le dará una idea de cómo se exporta la firma.
- 1. __declspec (dllimport/dllexport) y la herencia
- 2. ¿Qué hace realmente el código "DECLDIR __declspec (dllexport)"?
- 3. lo que hace __declspec (dllexport) hacer, cuando agregarlo antes de una función de importación
- 4. Android.mk, incluya todos los archivos cpp
- 5. CPP | .h archivos (C++)
- 6. fichero Make: compilar todos los archivos .cpp a .o archivos
- 7. estructura en diferentes archivos .cpp
- 8. Python incrustado en CPP: cómo recuperar los datos a CPP
- 9. ¿Qué es __declspec y cuándo debo usarlo?
- 10. Windows y C++: extern & __declspec (dllimport)
- 11. Visual Studio 2010 compilación de archivos .cpp como archivos .c
- 12. Qt, CMake, Visual Studio y Q_OBJECT en archivos cpp
- 13. vinculación entre dllimport y dllexport
- 14. ¿Cuál es la diferencia entre dllexport y dllimport?
- 15. GLES2 ¿Es glBindAttribLocation() necesario?
- 16. Makefile que compila todos los archivos cpp en un directorio en un ejecutable independiente
- 17. ¿En qué casos es necesario desapegarse de los eventos?
- 18. ¿Es necesario llamar a DispatchMessage en los programas de win32?
- 19. ¿Es necesario volátil aquí?
- 20. ¿Es necesario KillTimer?
- 21. ¿Cuándo es necesario deshacerse?
- 22. Prevenir los intentos de inserción de pestañas en ciertos archivos (p. Ej. * .cpp, * .h, CMakeLists.txt)
- 23. ¿Es necesario que los métodos setter tengan un argumento?
- 24. #incluye todos los archivos .cpp en una sola unidad de compilación?
- 25. string.c_str() ¿es necesario desasignar?
- 26. ¿Es realmente necesario CDATA?
- 27. jquery - ¿Es $ (documento) necesario?
- 28. ¿Es realmente necesario KillTimer?
- 29. ¿Es necesario AssemblyInfo.cpp?
- 30. Configurando fuentes cpp en gradle