Não foi possível iniciar o aplicativo corretamente (0xc000007b) Visual Studio C ++

Eu tenho um programa simples hello world c ++ que vincula sqlite3.dll (versão de 64 bits).

Adicionei sqlite3.he sqlite3.dll corretamente nos respectivos caminhos. Os projetos são compilados para a arquitetura de 64 bits. A compilação e vinculação vão bem.

O problema surge quando tento executar o exe.

Eu já vi muitas perguntas aqui que sugerem o uso de dependentes. Estou colocando a imagem aqui:

Não entendo por que ele falha, pois o sqlite3.dll está na pasta do exe. E se eu entendo bem, o caminhante da dependência encontra. A coluna do arco é x64 para todos.

O código fonte:

#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; 
}

Também usei o seguinte utilitário se o exe e a dll forem de 64 bits:PE Deconstructor. E os dois resultam em 64 bits.

EDITAR

Eu compilei o sqlite3.dll sozinho, seguindo as instruções em

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

com as seguintes instruções:

1) carregadovcvars32.bat amd64

2) então eu CD:

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

3) e inicie o comando:

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

EDIT 2

Tentei o sqlite3.dll oficial + sqlite3.def (binários x64) convertidos em sqlite3.lib com o seguinte comando:

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

sem sorte, mesmo erro.

EDIT 3

Eu estava colocando a DLL na pasta errada (o VS tem uma árvore de diretórios de saída estranha com nomes duplicados). Agora colocando ooficial&nbsp;DLL na pasta corretafunciona.

Eu consegui corrigir também minha dll personalizada, veja a resposta aceita. Peguei o arquivo sqlite3.def oficial e modifiquei o comando compile adicionando a opção / def. Dado o fato de que o def era para uma versão mais recente do sqlite, o vinculador se queixou de alguns símbolos ausentes. Eu removi esses símbolos do arquivo sqlite3.def e ele compilou corretamente o arquivo dll e também produziu arquivos .lib e .exp. (Não há necessidade do comando lib agora, pois o arquivo lib é criado diretamente). Colocando a nova DLL na pasta corretaFunciona como um encanto.

Por favor, não classifique a pergunta como duplicada.

obrigado