Até onde sei, precisamos __declspec(dllexport)
exportar símbolos para importar bibliotecas (arquivos .lib), que são necessárias para vinculação implícita.
Quando dei uma olhada em d3d11.h, descobri que nem todas as funções têm __declspec
.
Mas como explicar a biblioteca de importação existente d3d11.lib? A vinculação implícita poderia funcionar sem __declspec(dllimport)
cabeçalhos quando tentamos chamar funções neles?
A vinculação implícita pode funcionar sem __declspec(dllimport)
cabeçalhos quando tentamos chamar funções neles?
Isso se aplica aos Win .dll (ao trabalhar com o VStudio ).
Existem 2 etapas:
1. Crie o .dll (que exportará os símbolos)
Existem várias maneiras (3) de exportar símbolos de um .dll . Verifique:
[MS.Learn]: Exportando de uma DLL usando __declspec(dllexport)
[MS.Learn]: Exportando de uma DLL usando arquivos DEF
[MS.Learn]: /EXPORT (Exporta uma função)
Talvez você também queira ler:
[SO]: Como criar uma versão DLL do libjpeg 9b? (@CristiFati's answer) (especialmente Exportar dados da seção .dll)
[MS.Learn]: Exportando de uma DLL
2. Use (símbolos de) o .dll
Isso normalmente ocorre ao criar um cliente para o .dll (acima) (pode ser um aplicativo ou outro .dll ).
De acordo com [MS.Learn]: Importar para um aplicativo usando __declspec(dllimport) ( ênfase minha):
O uso
__declspec(dllimport)
é opcional em declarações de função , mas o compilador produz código mais eficiente se você usar esta palavra-chave.