Я пытаюсь создать управляемую оболочку вокруг DLL C ++.Когда я пытаюсь запустить тестовое приложение, я получаю сообщение об ошибке загрузки DLL.Это оказывается проблемой при попытке найти ЭЛТ.Копирование CRT в тот же каталог проходит мимо этой проблемы, но затем выдает ошибку, говорящую о том, что приложение неправильно загрузило среду выполнения C (R6034).У нативной программы C ++ нет проблем с любой из этих проблем.
DLL была скомпилирована с vc 2008 - управляемый код скомпилирован в 2010 году.
DLL имеет манифест, и я попыталсяКопирование точной версии CRT в рабочий каталог с тем же результатом, что и выше.
Мои вопросы:
- Почему нативная программа может загружать CRT, но управляемую оболочкуне могу найти его?
- Где я могу найти что-то, чтобы попытаться исправить вторую ошибку о загрузке CRT?Может ли это быть из-за искажения имени, CallingConvention и т. Д.?
Код C ++ (у меня есть только заголовок):
class Foo {
public:
static void startCall(std::string hostname);
}
Код C #:
[DllImport("mydll.dll")]
public static extern void startCall(string hostname );
public Test()
{
string hostname = "";
startCall(hostname);
}