Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
#1

Ошибка линковки - C++

24.07.2013, 11:55. Просмотров 918. Ответов 11
Метки нет (Все метки)

Ругается на:
Кликните здесь для просмотра всего текста
1>Generating Code...
1>Skipping... (no relevant changes detected)
1>WinMain.cpp
1>Linking...
1>Parser.obj : error LNK2019: unresolved external symbol __imp__PathFileExistsW@4 referenced in function "private: bool __thiscall CParser::IsFileExist(void)" (?IsFileExist@CParser@@AAE_NXZ)
1>c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\ecad\bin\\ecad.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\ecad\intermediate\BuildLog.htm"
1>ecad - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========


Код функции:
C++
1
2
3
4
5
bool CParser::IsFileExist()
{
    if ( PathFileExistsW( path_file.c_str() ) ) return true;
    return false;
}
структура:
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#pragma once
#include <Windows.h>
#include <Shlwapi.h>
#include <io.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <string>
#include "userfn.h"
#include "usertypes.h"
 
#include "engine/Object.h"
class CParser
{
//field:
    std::wstring path_file;
public:
    void LoadFromEcad(CObject & object, const std::wstring & path);
private:
    inline bool IsFileExist();
};

http://www.cyberforum.ru/cpp-beginners/thread114981.html
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2013, 11:55
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка линковки (C++):

Ошибка линковки
Вот список инклудов: #define _CRT_SECURE_NO_WARNINGS #include &quot;stdafx.h&quot;...

Ошибка линковки
Как исправить эту ошибку линковки? LRESULT CALLBACK WndProc(HWND, UINT ,...

Ошибка линковки
Всем привет. Столкнулся со следующей проблемой. в программе 9 файлов. 4 .h, 4...

Ошибка линковки
Здравствуйте. Создаю многофайловую программу. При компиляции всё замечательно,...

ошибка линковки
int main() { return 0; } делаю так: в MSVC++ создаю проект консоли, выбираю...

11
0x10
2554 / 1734 / 285
Регистрация: 24.11.2012
Сообщений: 4,361
24.07.2013, 11:59 #2
vbloodv, метод инлайн, а тело черти где.
1
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 12:21  [ТС] #3
Цитата Сообщение от 0x10 Посмотреть сообщение
метод инлайн, а тело черти где.
Ошибка не инлайн, это я оставил случайно эксперементировал... (программирование перебором)

Вот так для наглядности:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#pragma once
#include'ы
[SPOILER]#include <Windows.h>
#include <Shlwapi.h>
#include <io.h>
#include <iostream>
#include <fstream>
#include <stdio.h>
#include <vector>
#include <string>
#include "userfn.h"
#include "usertypes.h"
[/SPOILER]
#include "engine/Object.h"
class CParser
{
// Field:
    std::wstring path_file;
public:
    void LoadFromEcad(CObject & object, const std::wstring & path);
private:
    bool IsFileExist()
    {
        if ( PathFileExistsW( path_file.c_str() ) ) return true;
        return false;
    }
};
Ошибка:
1>------ Build started: Project: ecad, Configuration: Debug Win32 ------
1>Compiling...
1>WinMain.cpp
1>Generating Code...
1>Skipping... (no relevant changes detected)
1>Parser.cpp
1>Linking...
1>Parser.obj : error LNK2019: unresolved external symbol __imp__PathFileExistsW@4 referenced in function "private: bool __thiscall CParser::IsFileExist(void)" (?IsFileExist@CParser@@AAE_NXZ)
1>c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\ecad\bin\\ecad.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\vbloodv\Documents\Visual Studio 2008\Projects\ecad\intermediate\BuildLog.htm"
1>ecad - 2 error(s), 0 warning(s)
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

Добавлено через 12 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class CParser
{
// Field:
    std::wstring path_file;
public:
    void LoadFromEcad(CObject & object, const std::wstring & path);
private:
    inline bool IsFileExist()
    {
        if ( PathFileExistsW( path_file.c_str() ) ) return true;
        return false;
    }
};
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include "Parser.h"
void CParser::LoadFromEcad( CObject & object, const std::wstring & file_name )
{
    if (IsFileExist())
    {
        MessageBox(NULL,L"Message about error",L"OK",MB_OK);
    }
    else
    {
        MessageBox(NULL,L"Message about error",L"Abort",MB_OK);
    }
}
Ошибка та-же, я что-то не улавливаю на что именно линкер ругается...
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 12:44 #4
Реализация PathFileExistsW() есть?
0
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 12:53  [ТС] #5
Цитата Сообщение от alsav22 Посмотреть сообщение
Реализация PathFileExistsW() есть?
Это WinAPI
P.S. http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx
0
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2013, 12:57 #6
Цитата Сообщение от vbloodv Посмотреть сообщение
C++
1
2
if ( PathFileExistsW( path_file.c_str() ) ) return true;
return false;
C++
1
return PathFileExistsW(path_file.c_str()) == TRUE;
1
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 13:04  [ТС] #7
Цитата Сообщение от Jupiter Посмотреть сообщение
return PathFileExistsW(path_file.c_str()) == TRUE;
Ошибка осталась, но стиль я запомнил. Красиво! Эстетично, Лаконично, Верно...
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 13:29 #8
Скорее всего, реализации нет.
1
Jupiter
Каратель
Эксперт С++
6568 / 3989 / 400
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2013, 13:31 #9
Shlwapi прилинкован?
1
Praktolock
71 / 71 / 18
Регистрация: 29.11.2011
Сообщений: 345
24.07.2013, 13:33 #10
а либу подключить не надо?

Добавлено через 33 секунды
Shlwapi.lib подлючена?
1
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 13:38 #11
Цитата Сообщение от Praktolock Посмотреть сообщение
Shlwapi.lib подлючена?
Вот это решает проблему.
1
vbloodv
22 / 22 / 3
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 15:25  [ТС] #12
Цитата Сообщение от Praktolock Посмотреть сообщение
Shlwapi.lib подлючена?
Забыл, не подключил...
#pragma comment( lib, "shlwapi.lib" ) и все работает, спасибо большое проблема решена !
0
24.07.2013, 15:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2013, 15:25
Привет! Вот еще темы с решениями:

Ошибка линковки
Добрый вечер,подскажите как исправить ошибку линковки? мой код:...

Непонятная ошибка линковки
MyForm.h: #pragma once namespace Проект1 { using namespace System;...

Шаблонный класс, ошибка линковки
Всем добрый день, возникла такая ошибка, когда создаю объект класса в функции...

Ошибка линковки. Глобальные переменные
Здравствуйте, имеется многофайловый проект. Объявляю глобальные переменные с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru