Domanda

extern "C"
{
__declspec(dllexport) LRESULT CALLBACK MTest
}

Usando dipende, ho scoperto che c'è ancora il nome di manglini anche usando extern "C".

È stato utile?

Soluzione

L'unico modo per ottenere nomi veramente non decorati con __declspec (dllexport) è esportarli con la convenzione __CDecl Calling. Il callback diventa __stdcall, che decora la forma "C" del nome con un _ e un trailing @Bytes.

Altrimenti è possibile utilizzare un file .def, che è un dolore. Un altro modo specifico per MSVC è incorporare a /ESPORTARE Direttiva nel file dell'oggetto (o passarlo come un'impostazione di linker esplicita)

#pragma comment(linker, "/EXPORT:ExportSymbol=DecoratedName");

Per qualche motivo il = Parte della direttiva non è elencata nell'aiuto

Altri suggerimenti

Questo è la decorazione del nome piuttosto che il masgre. Dovresti dichiarare il nome non decorato in un file def e poi otterrai il comportamento che stai cercando.

Non essendo molto un programmatore di C ++ visivo il primo pensiero che mi accade è ... "Qualcuno di quei macro Lresult o callback introducono la convenzione di chiamata standard?" I nomi mutilati hanno @number_of_bytes_of_paramater_list o caratteri che raffigurano i tipi effettivi aggiunti ad essi?

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