提问人:Thaval 提问时间:11/13/2023 更新时间:11/13/2023 访问量:50
声明 ifstream 或 ofstream 变量时LNK1104
LNK1104 when declaring a ifstream or ofstream variable
问:
我尝试使用 ifstream 打开一个文件,但是一旦我尝试声明 ifstream 或 ofstream 变量,我就会得到LNK1104。标头有效,其余代码也有效。
#include "sqlite/sqlite3.h"
#include <string>
#include <stdio.h>
#include <iostream>
#include <fstream>
static int createDB(const char* s);
static int createTable(const char* s);
static int insertData(const char* s);
static int showAllTableEntries(const char* s, std::string table);
static int callback(void* NotUsed, int argc, char** argv, char** azColName);
static int updateData(const char* s, std::string table, int id, std::string toChange, std::string newValue);
static int updateData(const char* s, std::string table, int id, std::string toChange, int newValue);
int main()
{
const char* dir = "C:\\Meins\\Uebungen\\C++\\TryoutDatabase\\TryoutDatabase\\Tryout2.db";
sqlite3* DB;
createDB(dir);
createTable(dir);
return 0;
}
static int createDB(const char* s)
{
sqlite3* DB;
int exit = 0;
exit = sqlite3_open(s, &DB);
sqlite3_close(DB);
return 0;
}
static int createTable(const char* s)
{
sqlite3* DB;
std::string sql_statements;
/*std::ifstream sql_file; // as soon as i add this line to the code i get the LNK1104
sql_file.open("C:\\Meins\\Uebungen\\C++\\DatabaseMarketAnalysis\\DataBase\\DB_Setup.sql");
if (sql_file.is_open()) {
sql_statements = sql_file.get();
}*/
// sql statement
std::string sql = sql_statements;
try
{
// open the database
int exit = sqlite3_open(s, &DB);
char* messageError;
// execute the statement
exit = sqlite3_exec(DB, sql.c_str(), NULL, 0, &messageError);
if (exit != SQLITE_OK)
{
std::cerr << "Error Create Table" << std::endl;
sqlite3_close(DB);
}
else
{
std::cout << "Table created successfully" << std::endl;
}
sqlite3_close(DB);
}
catch (const std::exception & e)
{
std::cerr << e.what();
}
return 0;
}
我试图将标头更改为 fstream.h 或 .c,因为我认为标头有问题。但是我不知道我还能尝试什么。
答:
2赞
pts
11/13/2023
#1
删除该文件,然后再次运行生成。C:\Meins\Uebungen\C++\TryoutDatabase\x64\Debug\TryoutDatabase.exe
如果 Windows 不允许您删除该文件,则可能是因为程序 TryoutDatabase.exe 仍在运行。首先通过关闭程序窗口或从任务管理器终止程序。
评论
0赞
Thaval
11/14/2023
我的文件夹中没有 TryoutDatabase.exe。我试图清理构建并再次运行它,但它也不起作用。
1赞
Thaval
11/14/2023
我发现了问题所在。我的防病毒软件阻止了构建,因为它认为该程序是恶意软件。
评论