У меня есть функция в C #, которая отображает форму. Я показал функцию, используя Unmanaged Exports и вызывая ее из C ++ в образце провайдера учетных данных по ссылке на команду. Форма не отображается (ничего не происходит). Однако, когда я вызываю ту же форму C # с помощью консольного приложения C ++, форма отображается без каких-либо проблем. В чем может быть разница, что консольное приложение C ++ загружает его, но код поставщика учетных данных C ++ не загружает его?
C ++ Код:
using CSharpForm = void(__stdcall *)(wchar_t* message);
int _tmain(int argc, _TCHAR* argv[])
{
HMODULE mod = LoadLibraryA("CSharp.dll");
CSharpForm form = reinterpret_cast<CSharpForm>(GetProcAddress(mod, "form1"));
form(L"This is a c# form");
getchar();
return 0;
}
C # код:
[DllExport(ExportName = "form1", CallingConvention = CallingConvention.StdCall)]
public static void showForm([MarshalAs(UnmanagedType.LPWStr)]string message)
{
Form_Test form = new Form_Test();
form.Text = message;
form.ShowDialog();
}