Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 11:55     Ошибка линковки #1
Ругается на:
Кликните здесь для просмотра всего текста
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();
};
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.07.2013, 11:55     Ошибка линковки
Посмотрите здесь:

Ошибка линковки C++
C++ Ошибка линковки
C++ Шаблонный класс, ошибка линковки
C++ Ошибка линковки
ошибка линковки C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
24.07.2013, 11:59     Ошибка линковки #2
vbloodv, метод инлайн, а тело черти где.
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 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);
    }
}
Ошибка та-же, я что-то не улавливаю на что именно линкер ругается...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 12:44     Ошибка линковки #4
Реализация PathFileExistsW() есть?
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 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
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 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;
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 13:04  [ТС]     Ошибка линковки #7
Цитата Сообщение от Jupiter Посмотреть сообщение
return PathFileExistsW(path_file.c_str()) == TRUE;
Ошибка осталась, но стиль я запомнил. Красиво! Эстетично, Лаконично, Верно...
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 13:29     Ошибка линковки #8
Скорее всего, реализации нет.
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
24.07.2013, 13:31     Ошибка линковки #9
Shlwapi прилинкован?
Praktolock
 Аватар для Praktolock
58 / 58 / 0
Регистрация: 29.11.2011
Сообщений: 272
24.07.2013, 13:33     Ошибка линковки #10
а либу подключить не надо?

Добавлено через 33 секунды
Shlwapi.lib подлючена?
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.07.2013, 13:38     Ошибка линковки #11
Цитата Сообщение от Praktolock Посмотреть сообщение
Shlwapi.lib подлючена?
Вот это решает проблему.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.07.2013, 15:25     Ошибка линковки
Еще ссылки по теме:

C++ Ошибка линковки. Глобальные переменные
C++ Ошибка линковки в многофайловом проекте
C++ Непонятная ошибка линковки

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

Или воспользуйтесь поиском по форуму:
vbloodv
 Аватар для vbloodv
22 / 22 / 0
Регистрация: 15.12.2012
Сообщений: 314
24.07.2013, 15:25  [ТС]     Ошибка линковки #12
Цитата Сообщение от Praktolock Посмотреть сообщение
Shlwapi.lib подлючена?
Забыл, не подключил...
#pragma comment( lib, "shlwapi.lib" ) и все работает, спасибо большое проблема решена !
Yandex
Объявления
24.07.2013, 15:25     Ошибка линковки
Ответ Создать тему
Опции темы

Текущее время: 18:03. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru