本に載っていたソースなんですが,外部シンボル 'drand48()' が未解決(C:\NYU.OBJ が参照)というエラーが出てなかなかコンパイルできません。drand48という関数はstdlib.hに含まれていると思うのですが,何故だか分かりません。どなたか分かる方,是非ともお力をお貸しください。
環境はbcc55です。元のソースはC++Builder4で作られたそうです。字数の関係ですべて載せることができませんが,よろしくお願いします!
#include <stdio.h>
#include <math.h>
#include <string.h>
#include <locale.h>
#include <stdlib.h>
#define Iunits 14
#define Hunits 200
#define Ounits 2
#define Rlow -0.30
#define Rhigh 0.30
#define A 1.4
#define B 0.3
#define fout(x) ( 1 / (1 + exp( -(x) ) ))
#define urand() ( drand48() * (Rhigh - Rlow) + Rlow )
~中略
void initialize()/*各ユニットに乱数で重みを振り当てる*/
{
int i,j;
for (i = 0; i < Hunits; i++){
for (j = 0; j < Iunits; j++){
wih[i][j] = urand();
}
shikiih[i] = urand();
}
for (i = 0; i < Ounits; i++){
for (j = 0; j < Hunits; j++){
who[i][j] = urand();
}
shikiio[i] = urand();
}
}
~少略
No.2
- 回答日時:
drand48はUNIX/Linux系の関数です。
どんなコンパイラ(ライブラリ)でも提供されるものではないでしょう。
回答ありがとうございます。UNIX/LINUX系ですか・・・。度々質問して申し訳ないのですががなんとかwindowsでできないでしょうか?
No.3ベストアンサー
- 回答日時:
> なんとかwindowsでできないでしょうか?
↓これでいかがでしょ。
static long long x=0x1234ABCD330E;
double drand48() /* 0.0以上1.0未満 */
{
x = x*0x5DEECE66D + 0xB;
return (x&0xFFFFFFFFFFFF)*(1.0/281474976710656.0);
}
long lrand48() /* 0以上2147483647以下 */
{
x = x*0x5DEECE66D + 0xB;
return(long)(x>>17)&0x7FFFFFFF;
}
long mrand48() /* -2147483648以上214748367以下 */
{
x = x*0x5DEECE66D + 0xB;
return(long)(x>>16)&0xFFFFFFFF;
}
void srand48(long s)
{
x = s;
x = (x<<16)+0x330E;
}
なんとかコンパイルできました。まだ問題が発生してexeファイルは実行できませんが,もう一度全体を見直してみます。ありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
- C言語・C++・C# 並列プログラミングのπ計算について 1 2022/07/16 22:30
- C言語・C++・C# 10個の実数に対する降順ソート結果を出力するプログラムを作りたいのですが、以下のプログラムをどう直せ 1 2022/07/09 22:16
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# C言語の課題が出たのですが自力でやっても分かりませんでした。 要素数がnであるint型の配列v2の並 3 2022/11/19 17:41
- その他(プログラミング・Web制作) 十進BASICでの再帰についての質問です。 2 2022/11/18 09:17
- C言語・C++・C# C言語 プログラミング 4 2022/05/22 11:53
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# C言語で再起関数とポインタを用いて文字列反転をする方法がわかりません。 4 2023/04/29 20:32
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
構文エラーが出ているのですが...
-
#defineの使い方について
-
openCVで動画が読み込めないエ...
-
なぜ、C++の標準ヘッダをインク...
-
指定した文字を削除したい
-
#include "fstream.h"
-
#define中の#のエスケープ
-
Linux Ubuntu19.10でQt5.14.1の...
-
STLでポインタのリストをsort()...
-
JPEGやPNGが読めるLoadImage関数
-
テイラー展開とその精度について
-
構造体配列のvectorへの変換と...
-
ファイル読み込みとmap処理
-
【C++】ヘッダ内でstringを格納...
-
コーディング
-
C言語からgnuplot呼び出し
-
構造体に決められた文字列を入...
-
mapの初期化
-
snprintfが使用できない。
-
Cでのパケットキャプチャについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
構文エラーが出ているのですが...
-
VC++で文字列から任意の文字を...
-
enumの値から定義名を文字列化...
-
switch文のエラーについて
-
空ENTERの判別
-
なぜ、C++の標準ヘッダをインク...
-
【C++】ヘッダ内でstringを格納...
-
C++での <iostream.h>と<iostre...
-
#include "fstream.h"
-
#define中の#のエスケープ
-
JPEGやPNGが読めるLoadImage関数
-
リモートデスクトップの接続元I...
-
CStringとString
-
string型のフォーマット書式指...
-
std::map の const 修飾について
-
VHDLのsignedとunsignedの違いは?
-
このプログラミング誰か教えて...
-
構造体配列のvectorへの変換と...
-
指定した文字を削除したい
-
構造体に決められた文字列を入...
おすすめ情報