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 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

questionAnswers(2)

yourAnswerToTheQuestion