個人事業主の方必見!確定申告のお悩み解決

お世話になっております。

あるソフトウェアを使うに当たってMediSynというツールをコンパイルして
使うようにアドバイスをもらったのですが残念ながら力不足によりできないでいます。
もらったMedisynフォルダの中はcfg, cpp, headerで構成されていてそのうちのcppファイルを
全部コンパイルしてobjを作ればいいのかと思ってたのですが・・・

コンパイラをborlandとvisualstudio両方使ってもどちらもsrand48, drand48という関数がない?
といったエラーが出てきてしまいます
ググッたところいくつか該当する似たような問題は見つけられたのですがはっきりと解決方法は書かれていません。

それなら心当たりがあるという方、どうぞよろしくお願いします。

A 回答 (5件)

どうやた2つの関数は UNIX OS が 用意している関数のようです。


2つとも乱数(ランダムな数値)を生成する関数で、drand48はdouble型の乱数を生み出し、srand48はdrand48を使う前に呼び出しdrand48が正しく動作する為に初期設定を行う関数のようです。この程度なら、自作でdoubleがたの乱数を生成する関数を作り、drand48が呼び出されている場所で置き換えて呼び出せば(srand48は無視で結構)正しく動作すると思います。もしよろしければ補足してください。

この回答への補足

皆様たくさんのアドバイスありがとうございます。
できることならcygwinを通さずwindowsのままやりたかったので

以下のURL
http://www001.upp.so-net.ne.jp/isaku/rand.html

から引っ張ってきた記述をcppファイルがincludeしていたheaderにぶち込んだところ解決しました。
また上のURLの内容を見る限りdrand()関数はvisual C++では使えない?らしいです。

立て続けで申し訳ないのですが、今度は宣言に型が多すぎるというエラーが出て
これは引っ張ってきた記述の中の
static long long x=0x1234ABCD330E;
     ↑longが2つもある
が原因のようです。しかしこのlong long以外で数字を表現できなさそうです。
それ以外はもう問題はないと思いますのでもう一知恵お貸しください。

補足日時:2009/12/17 21:06
    • good
    • 0

Cygwin 使ってみるとか.

    • good
    • 0

srand48, drand48


両方とも標準関数じゃない。
ライブラリ関数なら、自分で実装しないと無理かもね。
    • good
    • 0

ヘッダーファイル(多分header)にもコンパイルに必要な情報が入っていますよ。

vs c++2008しか使ったことがありませんが、統合開発環境(オレンジ色のアイコンのアプリケーション)で[ファイル(メニューバー)]⇒[新規作成]⇒[プロジェクト]⇒適当にプロジェクト名入力して、cppファイル内に「main()」という記述があるなら[win32 コンソールアプリケーション]、「WinMain(略)」という記述があるなら[win32 プロジェクト]、(両方なかったら補足してくださればまた回答します)を選択して[OK]⇒アプリケーションウィザードが開き、[次へ]⇒「空のプロジェクト」にチェックをつけ、他変更せず[完了]を押してください。長くなりましたが、これでプロジェクトが作られます。ソリューションエクスプローラーの「ソースファイル」部分にcppファイルを追加、「ヘッダーファイル」部分にheaderを追加してください。あとはビルドするだけで、[ビルド(メニューバー)]⇒[ソリューションのビルド]でビルドできます。cfgは何かの設定ファイルのようですが、何でしょうね?読まないとわからないですね。失敗したりわからなかったりしたら補足していただければ幸いです。
    • good
    • 0

参考まで。


http://www.math.meiji.ac.jp/~mk/labo/text/giji-r …

OSが違うんじゃない?
    • good
    • 0
この回答へのお礼

Linuxじゃなきゃダメなんでしょうか?
使っているのはwindowsxpです。

borlandもvisualstudioも最新のダウンロードしたてなのでそちらのほうに
srand48,drand48という関数がかけてしまっているのかと思ってました。

お礼日時:2009/12/17 18:07

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qdrand48()が使えない

お世話になっております、皆様のおかげで昨日ウインドウズ上でCを動かせるようになったサルプログラマーです。

Borlandの無償配布をダウンロードしました。Linuxで
gcc program1.c -o program1 -lm -O
としてコンパイルできていたものをそのまま持ってきて(拡張子変えて)、
C:\bcc>bcc32 program1.cpp
としたら

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
program1.cpp:
エラー E2268 program1.cpp 61: 未定義の関数 'srand48' を呼び出した(関数 main() )
エラー E2268 program1.cpp 66: 未定義の関数 'drand48' を呼び出した(関数 main() )
*** 2 errors in Compile ***

となってしまいました。

いままでプログラムの中身は
========================================================
srand48(seed);
for(i=0; i<I; i++){
while(1){
do{
x=drand48()*2.0-1.0;
y=drand48()*2.0-1.0;


========================================================
という形でLinux上ではコンパイルできてましたが、ウインドウズに持ってきたらダメでした。ある掲示板でdrand48()は非標準関数であるとありましたが、このために使えないのでしょうか?[0,1)のdoubleの乱数を返す、また質がいいからオススメと友達に言われて使っていたのです。ですから非常にいいなあと思って使っていたのですが、どうにかならないでしょうか。使えるようにするにはどうしたらよいのでしょうか、色々あるかと思いますが何か解決方法をご教授ください。

お世話になっております、皆様のおかげで昨日ウインドウズ上でCを動かせるようになったサルプログラマーです。

Borlandの無償配布をダウンロードしました。Linuxで
gcc program1.c -o program1 -lm -O
としてコンパイルできていたものをそのまま持ってきて(拡張子変えて)、
C:\bcc>bcc32 program1.cpp
としたら

Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
program1.cpp:
エラー E2268 program1.cpp 61: 未定義の関数 'srand48' を呼び出した(関数 main() )
エラー E2268 program...続きを読む

Aベストアンサー

ライブラリ関数は、コンパイラによって違いますのでBCで
同等の関数に置き換える必要があります。
なければ、自分で作成するか方法を変えるかありませんが..。


人気Q&Aランキング