Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 14.10.03 15:42
Оценка:
Я вообщем давно ничего на си не писал.
Я пытаюсь скомпилировать пример из BASS (writewav.c) (www.un4seen.com)
с помощью bcc32 (халявный от борланда для коммандной строки)

Вообщем выдает, что нет нужной функции:

    Warning W8065 writewav.c 23: Call to function 'BASS_GetVersion' with no prototype in function main
    Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
    Error: Unresolved external 'BASS_GetVersion' referenced from C:\BCC55\BIN\WRITEWAV.OBJ


А вот код:


    /* Imports: bass.lib, basswma.lib, kernel32.lib*/

    #include <windows.h>
    #include <stdio.h>
    #include <conio.h>
    #include "bass.h"
    [b][SIZE=1]
    void main()
    {
    /* check that BASS 1.8 was loaded */
    if (BASS_GetVersion()!=MAKELONG(1,8)) {
    printf("BASS version 1.8 was not loaded\n");
    return;
    }
    }


Можь я не правильно загружаю bass.h?

16.10.03 15:46: Перенесено модератором из 'C/C++' — ПК
Re: Не компилиться программа на С
От: creatio Украина  
Дата: 14.10.03 15:50
Оценка:
Здравствуйте, anod, Вы писали:

A>Я вообщем давно ничего на си не писал.

A>Я пытаюсь скомпилировать пример из BASS (writewav.c) (www.un4seen.com)
A>с помощью bcc32 (халявный от борланда для коммандной строки)

A>Вообщем выдает, что нет нужной функции:


A>

    A>Warning W8065 writewav.c 23: Call to function 'BASS_GetVersion' with no prototype in function main
    A>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
    A>Error: Unresolved external 'BASS_GetVersion' referenced from C:\BCC55\BIN\WRITEWAV.OBJ

    A>


A>А вот код:



A>

    A>/* Imports: bass.lib, basswma.lib, kernel32.lib*/

    A>#include <windows.h>

    A>#include <stdio.h>
    A>#include <conio.h>
    A>#include "bass.h"
    A>[b][SIZE=1]
    A>void main()
    A>{
    A>/* check that BASS 1.8 was loaded */
    A>if (BASS_GetVersion()!=MAKELONG(1,8)) {
    A>printf("BASS version 1.8 was not loaded\n");
    A>return;
    A>}
    A>}

    A>


A>Можь я не правильно загружаю bass.h?


Скорее всего bass.h — содержит только объявления, а по сему линкер не может найти собственно реализации функций.
Необходимо в проект добавить соответствующую библиотек (lib-файл).
Why do you call Visual Studio 'your bunny'?...
(c) one american colleague
Re[2]: Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 14.10.03 15:55
Оценка:
Здравствуйте, creatio, Вы писали:

C>Скорее всего bass.h — содержит только объявления, а по сему линкер не может найти собственно реализации функций.

C>Необходимо в проект добавить соответствующую библиотек (lib-файл).

У меня bass.lib и bass.dll лежали в той же папке, что и программа, поместил их в папку lib — не помогло.
запускаю так:
bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib writewav.c
Re: Не компилиться программа на С
От: jazzer Россия Skype: enerjazzer
Дата: 14.10.03 15:56
Оценка:
Здравствуйте, anod, Вы писали:

A>/* Imports: bass.lib, basswma.lib, kernel32.lib*/

A>#include <windows.h>
A>#include <stdio.h>
A>#include <conio.h>
A>#include "bass.h"

A>void main()
A>{
A>  /* check that BASS 1.8 was loaded */
A>  if (BASS_GetVersion()!=MAKELONG(1,8)) {
A>    printf("BASS version 1.8 was not loaded\n");
A>    return;
A>  }
A>}
A>

Может быть, все дело в выделенной строчке?
Подключи перечисленные либы.
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[3]: Не компилиться программа на С
От: jazzer Россия Skype: enerjazzer
Дата: 14.10.03 15:59
Оценка:
Здравствуйте, anod, Вы писали:

A>Здравствуйте, creatio, Вы писали:


C>>Скорее всего bass.h — содержит только объявления, а по сему линкер не может найти собственно реализации функций.

C>>Необходимо в проект добавить соответствующую библиотек (lib-файл).

A>У меня bass.lib и bass.dll лежали в той же папке, что и программа, поместил их в папку lib — не помогло.

A>запускаю так:
A>bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib writewav.c

не знаю, как там у борланда, но обычно ключ L — это путь, где надо искать библиотеки, перечисленные под ключом -l.

так что попробуй написать
bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib -lbass -lkernel32 -lbasswma -lwritewav.c (как-то так)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 14.10.03 16:03
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, anod, Вы писали:

J>Может быть, все дело в выделенной строчке?
J>Подключи перечисленные либы.

Можь это как-то явно в программе или в пути к компилятору прописать?
Re[4]: Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 14.10.03 16:07
Оценка:
Здравствуйте, jazzer, Вы писали:

J>не знаю, как там у борланда, но обычно ключ L — это путь, где надо искать библиотеки, перечисленные под ключом -l.


J>так что попробуй написать

J>bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib -lbass -lkernel32 -lbasswma -lwritewav.c (как-то так)

bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib -lbass -lkernel32 -lbasswma writewav.c
пишет:
writewav.c:
Warning W8065 writewav.c 23: Call to function 'BASS_GetVersion' with no prototype in function main
Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
Fatal: Expected a ':' or '=': b



Syntax is: BCC32 [ options ] file[s]
-Ixxx Include files directory -Lxxx Libraries directory
Re[5]: Не компилиться программа на С
От: jazzer Россия Skype: enerjazzer
Дата: 14.10.03 16:35
Оценка:
Здравствуйте, anod, Вы писали:

A>Здравствуйте, jazzer, Вы писали:


J>>не знаю, как там у борланда, но обычно ключ L — это путь, где надо искать библиотеки, перечисленные под ключом -l.


J>>так что попробуй написать

J>>bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib -lbass -lkernel32 -lbasswma -lwritewav.c (как-то так)

A>bcc32 -Ic:\bcc55\include -Lc:\bcc55\lib -lbass -lkernel32 -lbasswma writewav.c

A>пишет:
A>writewav.c:
A>Warning W8065 writewav.c 23: Call to function 'BASS_GetVersion' with no prototype in function main
A>Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland
A>Fatal: Expected a ':' or '=': b


A>

A>Syntax is: BCC32 [ options ] file[s]
A> -Ixxx Include files directory -Lxxx Libraries directory


Ну посмотри документацию по компилятору, в каком виде ему надо поставлять имена библиотек в опции -l.
Я же не могу это за тебя сделать, сидя на работе в юнихе :)
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[6]: Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 14.10.03 16:41
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Ну посмотри документацию по компилятору, в каком виде ему надо поставлять имена библиотек в опции -l.

J>Я же не могу это за тебя сделать, сидя на работе в юнихе

Я тут readme почитал, и сделал все как там написанно — одно и тоже
a. Add "c:\Bcc55"
to the existing path
b. Create a bcc32.cfg file which will set
the compiler options for the Include
and Lib paths (-I and -L switches to
compiler) by adding these lines:
-I"c:\Bcc55\include"
-L"c:\Bcc55\lib"
c. Create an ilink32.cfg file which will set
the linker option for the Lib path by
adding this line:
-L"c:\Bcc55\lib"
Re[7]: Не компилиться программа на С
От: jazzer Россия Skype: enerjazzer
Дата: 14.10.03 17:37
Оценка:
Здравствуйте, anod, Вы писали:

A>Здравствуйте, jazzer, Вы писали:


J>>Ну посмотри документацию по компилятору, в каком виде ему надо поставлять имена библиотек в опции -l.

J>>Я же не могу это за тебя сделать, сидя на работе в юнихе :)

A>Я тут readme почитал, и сделал все как там написанно — одно и тоже


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

вот я написал в яндексе "bcc32 flags" и пошел по первой же ссылке и нашел нечто похожее на то, что надо:
bcc32 -Ic:\rogue test.cpp c:\rogue\lib\btl.lib user32.lib


может, и тебе повезет :))
jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re: Не компилиться программа на С
От: anod Израиль http://anod.monos.ru
Дата: 15.10.03 20:05
Оценка:
Вообщем я розабрался с этой проблемой, надо было добавить эту строчку
#define BASSDEF(f) (WINAPI *f) // define the functions as pointers

Появилась новая проблема, если компилирую с помощью bcc32.exe, то
выдает следующее:
    Warning W8060 writewav.cpp 54: Possibly incorrect assignment in function main(int,char * *)
Main выглядит так:
    void main(int argc, char **argv)

А аргумент в функции, которая вызывает это сообщение, argv[1], описан как void *
как их привести????

Если компилирую с помощью lcc, то выдает следующее
    left operand of . has incompatible type 'int'
код:
    WAVEFORMATEX wf;
    wf.nBlockAlign=wf.nChannels*wf.wBitsPerSample/8;
по MSDN эти параметры типа word:
    typedef struct
    {
    WORD wFormatTag;
    WORD nChannels;
    DWORD nSamplesPerSec;
    DWORD nAvgBytesPerSec;
    WORD nBlockAlign;
    WORD wBitsPerSample;
    WORD cbSize;
    } WAVEFORMATEX; *PWAVEFORMATEX;

И ещё, нет ли у кого-нибуть хороших ссылок на приведение типов в с????
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.