LINUX.ORG.RU

error LNK2019

 


0

1

В first.h

public: static bool M_Test(); static int my_i;
в first.cpp
bool M_Test(){return true;}
в two.cpp пытаюсь вызвать, и все накрывается медным тазом
int new_i = first::my_i;
first::M_Test();
как в этих ваших плюсах провернуть такое?



Последнее исправление: ioexception (всего исправлений: 1)

public: static bool M_Test(); static int my_i;

WTF?

как в этих ваших плюсах провернуть такое?

делить на ноль? UB.

emulek
()

А инициализировать my_i кто будет?

Torvus
()

как в этих ваших плюсах провернуть такое?

public: static bool M_Test(); static int my_i;

Прочитать все 1000 страниц Страуструпа, и только потом сесть за компилятор.

error LNK2019

Проследуйте на forum.windowsfaq.ru

EXL ★★★★★
()

static int my_i;

и

int new_i = first::my_i;

Статический член класса должен быть инициализирован в сишнике (в cpp). А если это просто статическая переменная, то она должна быть объявлена в cpp-файле.

aureliano15 ★★
()
Ответ на: комментарий от EXL

Прочитать все 1000 страниц

Я буду последним смеяться, когда тебе вдруг доведется работать с кодом, который написал я когда просил тут помощи а меня направили лопатить книги, ох посмеюсь :)

ioexception
() автор топика

Я бы на вашем месте послушал советы по поводу сначала прочитать учебник, т.к. возникает ощущение, что автор кода не понимает, что делает.
попробуем
ld libastral.so

class first {
public: static bool M_Test(); static int my_i;
}
bool first::M_Test(){return true;}
#include "first.h"
int first::my_i = 100;
int main() {
int new_i = first::my_i;
first::M_Test();
}

elijah_sd
()
Ответ на: комментарий от elijah_sd

first::M_Test();

это вызывает ошибку Ошибка 1 error LNK2019: ссылка на неразрешенный внешний символ «public: static bool __cdecl first::M_Test(void)» (?M_Test@first@@SA_NXZ) в функции...

ioexception
() автор топика

Зачем выбрал цепепе? Ну не можешь ты в него сейчас, возьми что нибудь полегче. Начни с SICP.

Oxdeadbeef ★★★
()
Ответ на: комментарий от ioexception

Блин, да напишите вы в чем ошибка

Ошибка тут между компьютером и стулом, которая банально не могла прочитать какой-нибудь «C++ за 21 день» или ВУЗовскую методичку во время семестра.

EXL ★★★★★
()
Ответ на: комментарий от ioexception

Тыжпогромисьт итп

Если ты не в состоянии скомпилировать Hello World на C++ да ещё и в винде, какой ты нафиг, тыжпрограммист?

EXL ★★★★★
()
Ответ на: комментарий от ioexception

ошибка не из-за этого

Ну тогда напряги межушный ганглий, т.к. это error LNK2019 (комментарий) работает (если ; поставить). Например сделай полный ребилд или как там это в студии называется.

no-such-file ★★★★★
()

В общем файлы полностью:
first.h

#pragma once
class first
{
public: static bool M_Test();
};

first.cpp
#include "first.h"
bool M_Test()
{
return true;
}

two.cpp
#include "first.h"
bool bb = first::M_Test();

ioexception
() автор топика
Ответ на: комментарий от ioexception

думаю проблема в компиляции, если бы это был gcc, то
g++ -c first.cpp -o first.o
g++ -c main.cpp -o main.o
ld first.o main.o -o myprogram

я бы предположил, что вы компилируете только main.cpp, или откуда там M_Test вызывается, но first.cpp не компилируется и/или не линкуется

elijah_sd
()
Ответ на: комментарий от EXL

мог бы не утруждаться, проходить мимо. Столько текста нагенерировал бесполезного, когда мог бы просто пример написать как правильно.

ioexception
() автор топика

Ну и кстати да.

Вижуалстудмя – говно. Кланг бы вывел предупреждение (до ругани компоновщика) на такую ошибку.

Stil ★★★★★
()
Ответ на: комментарий от Weres

Я смотрю, это уже писали. Неужели не заработало?

Weres ★★★
()
Ответ на: комментарий от Weres

А кто будет при определении M_Test указывать класс?

Спасибо! Я запарился, не заметил, теперь заработало.
Единственный адекватный человек в отличии от остальных троллей...

ioexception
() автор топика
Ответ на: комментарий от ioexception

Вообще-то, если честно, 1 элементарная ошибка в элементарном коде (не инициализированная статическая переменная) для новичка в C++ ещё куда ни шло. Но 2! элементарных ошибки на 12! строк (забыл перед именем функции в сишнике поставить имя класса и ::) - это слишком даже для новичка. Я убеждён, что если ты прочитаешь какую нибудь книжку, то сэкономишь себе же время. Если же времени на чтение уже нет, то единственный выход - это обратиться к кому-то, чтоб написали тебе программу с начала и до конца и разжевали за деньги или за спасибо (если кто согласится). Ведь это только начало. Если на каждые 6 строк делать по ошибке, то времени на написание даже небольшой программы уйдёт куда больше, чем на чтение 1000 страниц Страуструпа. Без обид. :-)

aureliano15 ★★
()
Ответ на: комментарий от ioexception

проблема в том, что я его не выбирал, он мне не нужен, но работу сдать надо

спроси спроси своего работадателя, ему ещё идиоты нужны?

По части правильности кода: там ВСЁ неправильно. Боюсь это не твоё, займись своим делом(не знаю каким, но точно не программирование).

emulek
()
Ответ на: комментарий от ioexception

Начни с Розенталя, например

anonymous
()
Ответ на: комментарий от ioexception

понятно, как за фаберже взяли, так в кусты за орфографию цепляться...

ты не очень понимаешь, что для программиста НУЖНО знать родной язык. Если ты не можешь сказать это по-русски, то не сможешь сказать на _любом_ языке. В т.ч. на C++.

Ну начнём с того, что ошибки «накрылось медным тазом» нет ни в одном компиляторе. Даже в MSVS. Зачем ты тему создавал? Похвастаться? Я не очень понял, чем именно?

emulek
()
Ответ на: комментарий от emulek

ты не очень понимаешь, что для программиста НУЖНО знать родной язык. Если ты не можешь сказать это по-русски, то не сможешь сказать на _любом_ языке. В т.ч. на C++.

А ещё английский.

Зачем ты тему создавал?

1) Загуглить номер ошибки не получилось. 2) Потроллить (хотя маловероятно)

UVV ★★★★★
()
Ответ на: комментарий от aureliano15

Английского достаточно. Родной - опционально. :-)

Ну так он же пришёл на этот форум. Подавляющее большинство местной школоты английским владеют на уровне «Ландан из зе кэпитал оф Грейт Британ».

UVV ★★★★★
()
Ответ на: комментарий от ioexception

Умиляют подобные пи***ы...
3) Повысить скор

И снова фейл..

UVV ★★★★★
()
Ответ на: комментарий от ioexception

Я буду последним смеяться, когда тебе вдруг доведется работать с кодом, который написал я

Такими темпами реального кода ты не напишешь.

а меня направили лопатить книги, ох посмеюсь :)

Ну да, учить матчасть до того как писать код - это так смешно.

DarkEld3r ★★★★★
()
Ответ на: комментарий от Stil

Кланг бы вывел предупреждение (до ругани компоновщика) на такую ошибку.

Разве?

Ну и ты думаешь автор на предупреждения вообще смотрит? Ещё, наверное, и минимальный уровень включён.

DarkEld3r ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.