Приложение не удалось правильно запустить (0xc000007b) Visual Studio C ++

У меня есть простая программа hello world c ++, которая связывает sqlite3.dll (64-битная версия).

Я правильно добавил sqlite3.h и sqlite3.dll в соответствующие пути. Проекты компилируются для 64-битной архитектуры. Компиляция и компоновка идут нормально.

Проблема возникает, когда я пытаюсь запустить exe.

Я видел много вопросов здесь, которые предлагают использовать ходок зависимости. Я помещаю скриншот здесь:

Я не понимаю, почему это не удается, так как sqlite3.dll находится в папке EXE. И если я хорошо понимаю, ходок зависимости находит это. Арочный столбец x64 для всех.

Исходный код:

#include <iostream>
#include "sqlite3.h"

int main() 
{ 
    std::cout<< "Hello world and all that" << std::endl; 
    sqlite3 *db;
    char *zErrMsg = 0;
    int rc;

    rc = sqlite3_open("test.db", &db);

    if( rc ){
        fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
        exit(0);
    }else{
        fprintf(stderr, "Opened database successfully\n");
    }
    sqlite3_close(db);

    return 0; 
}

Я также использовал следующую утилиту, если exe и dll оба 64-битные:PE Deconstructor, И оба они в результате будут 64-битными.

РЕДАКТИРОВАТЬ

Я сам скомпилировал sqlite3.dll, следуя инструкциям в

https://www.sqlite.org/howtocompile.html

со следующими инструкциями:

1) загруженvcvars32.bat amd64

2) тогда я записываю в:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64

3) и запустите команду:

cl sqlite3.c -link -dll -out:sqlite3.dll /MACHINE:x64 

РЕДАКТИРОВАТЬ 2

Я попробовал официальный sqlite3.dll + sqlite3.def (x64 binaries), преобразованный в sqlite3.lib, с помощью следующей команды:

lib /def:sqlite3.def /OUT:sqlite3.lib /MACHINE:x64

без удачи, та же ошибка.

РЕДАКТИРОВАТЬ 3

Я помещал dll в неправильную папку (VS имеет странное дерево вывода dir с дублированными именами). Сейчас выкладываюофициальный&nbsp;DLL в правильной папкеоно работает.

Мне удалось исправить также мою специально построенную DLL, см. Принятый ответ. Я взял официальный файл sqlite3.def и изменил команду compile, добавив ключ / def. Учитывая тот факт, что def был для более новой версии sqlite, компоновщик жаловался на некоторые недостающие символы. Я удалил эти символы из файла sqlite3.def, и он правильно скомпилировал файл dll, а также создал файлы .lib и .exp. (Теперь нет необходимости в команде lib, поскольку файл lib создается напрямую). Помещение нового dll в правильную папкуработает как шарм.

Пожалуйста, не классифицируйте вопрос как дубликат.

Спасибо