Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.05.2008, 01:53   #1
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
Вопрос ошибка в inline функции

Доброго время суток,
Есть написанная библиотека dll, уже использовалась (проверенная). Мне нужно ее подключить, наследовать и переопределить некоторые методы. Прописав соответствующие настройки и т.д. с подключением разобрались, но теперь выдает ошибку в написанном не мною коде...

Цитата:
d:\cmycontroller\cmycontroller\cmco ntrol.h(18) : error C2562: 'Stop' : 'void' function returning a value
d:\cmycontroller\cmycontroller\cmco ntrol.h(18) : see declaration of 'Stop'
Error executing cl.exe.
код соответствующего h-файла:
Код:
#pragma once

#ifdef CONTROL_EXPORTS
#define CONTROL_API __declspec(dllexport)
#else
#define CONTROL_API __declspec(dllimport)
#endif

#define BUFFER_SIZE 64

class __declspec(dllimport) CMControl {
public:
    CMControl(void);
    ~CMControl(void);

    void Move( int x, int y );
    void MoveTime( int x, int y, bool qWait = false );
    inline void Stop() { return Move(0, 0); }

protected:
    static DWORD __stdcall $BGThread( CMControl* pThis );
    DWORD BGThread();
    bool DoMoving( int xx, int yy );

    void FillBuffer( int x, int y, bool q = false );

protected:
    HMODULE m_hModule;
    typedef BOOL ( __cdecl *tfnDeviceIni ) (void);
    typedef BOOL ( __cdecl *tfnWriteBuffer ) ( BYTE* buf, int buf_len, unsigned int flags );
    tfnDeviceIni m_fnDeviceIni;
    tfnWriteBuffer m_fnWriteBuffer;

    HANDLE m_hBGThread;
    DWORD m_dwBGThreadId;

    HANDLE m_hEvent, m_hEventReturn;
    volatile enum EventType { etNone, etRun, etKill } m_Event;
    volatile int m_x, m_y;

    BYTE m_aCommand[BUFFER_SIZE];
};
почему выдает ошибку в строчке:
Код:
inline void Stop() { return Move(0, 0); }
В моем коде(основном файле) пока все очень примитивно:
Код:
#include "stdafx.h"
#include ".\controller.h"
#pragma comment(lib,"Control.lib")

class CMyController:public CController
{
    CMyController(){}
    ~CMyController(){}

};
Tan4ik вне форума Ответить с цитированием
Старый 03.05.2008, 04:11   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Уберите "return" из функции Stop(). А вообще, эффект интересный, с учётом того, что функция Move() имеет тип void. Мне, во всяком случае, в MSVS 2003 и с майкрософтовским, и с интеловским компиляторами удалось добиться такого эффекта только вариантами вроде

Код:
    int Move( int x, int y );
    inline void Stop() { return Move(0, 0); }
или
Код:
    inline void Stop() { return 1; Move(0, 0); }
Какая версия студии/компилятора?
B_N вне форума Ответить с цитированием
Старый 04.05.2008, 21:26   #3
Tan4ik
Пользователь
 
Аватар для Tan4ik
 
Регистрация: 20.04.2008
Сообщений: 18
По умолчанию

у меня - Microsoft Visual C++ 6.0, а какая у разработчика данной библиотеки - не знаю)
Tan4ik вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
inline asm в gcc drRobert Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 23.08.2008 10:26
Видимо ошибка в функции(помогите исправить) GAGARIN-NEW Общие вопросы Delphi 18 07.05.2008 12:30
Функции furian Общие вопросы C/C++ 3 18.12.2007 12:48
inline??? пыхта4ог Общие вопросы C/C++ 2 09.11.2007 17:54
Ошибка при декларировании функции в Firebird из UDF shurik_7866 БД в Delphi 1 30.07.2007 08:55