Запускаю следующий код:
#pragma region Includes and Imports
#include <windows.h>
#include <metahost.h>
#pragma comment(lib, "mscoree.lib")
// Import mscorlib.tlb (Microsoft Common Language Runtime Class Library).
#import "mscorlib.tlb" raw_interfaces_only \
high_property_prefixes("_get","_put","_putref") \
rename("ReportEvent", "InteropServices_ReportEvent")\
rename("or", "InteropServices_or")
using namespace mscorlib;
#pragma endregion
HRESULT CallToManagedRT(
PCWSTR pszVersion,
PCWSTR pszAssemblyPath,
PCWSTR pszClassName,
PCWSTR pszClassStaticMethodName,
PCWSTR pszClassMethodArg)
{
HRESULT hr;
DWORD dwRet;
ICLRMetaHost *pMetaHost = NULL;
ICLRRuntimeInfo *pRuntimeInfo = NULL;
ICLRRuntimeHost *pClrRuntimeHost = NULL;
wprintf(L"DEBUG: Passed for Execution: %s %s %s %s %s\n",
pszVersion, pszAssemblyPath, pszClassName, pszClassStaticMethodName, pszClassMethodArg);
wprintf(L"DEBUG: Load and start the .NET runtime %s \n", pszVersion);
hr = CLRCreateInstance(CLSID_CLRMetaHost, IID_PPV_ARGS(&pMetaHost));
if (FAILED(hr))
{
wprintf(L"ERROR: CLRCreateInstance failed w/hr 0x%08lx\n", hr);
goto Cleanup;
}
IEnumUnknown *installedRuntimes;
hr = pMetaHost->EnumerateInstalledRuntimes(&installedRuntimes);
if (FAILED(hr))
{
wprintf(L"ERROR: ICLRMetaHost::EnumerateInstalledRuntimes failed w/hr 0x%08lx\n", hr);
goto Cleanup;
}
{
ICLRRuntimeInfo *runtimeInfo = NULL;
ULONG fetched = 0;
while ((hr = installedRuntimes->Next(1, (IUnknown **)&runtimeInfo, &fetched)) == S_OK && fetched > 0) {
wchar_t versionString[20];
DWORD versionStringSize = 20;
hr = runtimeInfo->GetVersionString(versionString, &versionStringSize);
if (versionStringSize >= 2) {
wprintf(L"DEBUG: Available CLR Version : %s\n", versionString);
}
}
}
hr = pMetaHost->GetRuntime(pszVersion, IID_PPV_ARGS(&pRuntimeInfo));
if (FAILED(hr))
{
wprintf(L"ERROR: ICLRMetaHost::GetRuntime failed w/hr 0x%08lx\n", hr);
goto Cleanup;
}
BOOL fLoadable;
hr = pRuntimeInfo->IsLoadable(&fLoadable);
if (FAILED(hr))
{
wprintf(L"ERROR: ICLRRuntimeInfo::IsLoadable failed w/hr 0x%08lx\n", hr);
goto Cleanup;
}
if (!fLoadable)
{
wprintf(L"ERROR: .NET runtime %s cannot be loaded\n", pszVersion);
goto Cleanup;
}
hr = pRuntimeInfo->GetInterface(CLSID_CLRRuntimeHost,
IID_PPV_ARGS(&pClrRuntimeHost));
if (FAILED(hr))
{
wprintf(L"ERROR: ICLRRuntimeInfo::GetInterface failed w/hr 0x%08lx\n", hr);
goto Cleanup;
}
hr = pClrRuntimeHost->Start();
if (FAILED(hr))
{
wprintf(L"ERROR: CLR failed to start w/hr 0x%08lx\n", hr);
goto Cleanup;
}
wprintf(L"DEBUG: Load the assembly %s\n", pszAssemblyPath);
hr = pClrRuntimeHost->ExecuteInDefaultAppDomain(pszAssemblyPath,
pszClassName, pszClassStaticMethodName, pszClassMethodArg, &dwRet);
if (FAILED(hr))
{
wprintf(L"ERROR: Failed to call %s(%s) w/hr 0x%08lx\n", pszClassStaticMethodName, pszClassMethodArg, hr);
goto Cleanup;
}
wprintf(L"DEBUG: Call %s.%s(\"%s\") => %d\n", pszClassName, pszClassStaticMethodName,
pszClassMethodArg, dwRet);
Cleanup:
if (pMetaHost)
{
pMetaHost->Release();
pMetaHost = NULL;
}
if (pRuntimeInfo)
{
pRuntimeInfo->Release();
pRuntimeInfo = NULL;
}
if (pClrRuntimeHost)
{
pClrRuntimeHost->Release();
pClrRuntimeHost = NULL;
}
return hr;
}
Ошибка: 1>MSVCRTD.lib(exe_main.obj) : error LNK2019: ёё√ыър эр эхЁрчЁх°хээ√щ тэх°эшщ ёшьтюы _main т ЇєэъЎшш "int __cdecl invoke_main(void)" (?invoke_main@@YAHXZ)
Думаю что не удалось подключить библиотеку mscorlib.tlb? Сам этот файл не находит. Должен ли он находить его вообще?
"Запускаю" на компиляцию а не на выполнение, я полагаю? Тут ошибка редактора связей, который при сборке по-умолчанию ищет точку входа "main" а её и нет. Нужны специальные указания компилятору, поищите файл проекта рядом с исходным кодом, и именно его открывайте студией, а не cpp-шник.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть такой код сохранения скриншотаЕсть битмап и хотелось бы обойти его в цикле попиксельно
Создал диалоговое окно "X" из главного окнаСоздал второй поток в диалоговом окне "X"
Создал форму с группой чекбоксов(36 штук)Необходимо, чтобы при выборе любого чекбокса его название сохранялось в лист ToHide