過去に質問していたらすいません。
DLLは複数のアプリケーションをマルチタスクで活用するソースプログラムだと認識しているのですが、まちっがていたら指摘してください。
 DLLのプログラムの書き方がわからないので、参考になるページを教えてもらえないでしょうか。言語はC言語です。DLLをC言語で書くのかもわからないので。。
 プロジェクトの概念があまりわからないので、そちらの方も参考になるページまたは「かきこ」よろしくお願いします。
 

このQ&Aに関連する最新のQ&A

A 回答 (2件)

DLLの意味は下記URLを参照して下さい。


DLLを使って何をしたいのかが解らないと...

もしCOMが作りたいならATL【Active Template Library】
関係の書籍をさがして下さい。

VBから入門したほうがCOMを理解するのが簡単かもしれない

参考URL:http://www.e-words.ne.jp/view.asp?word=dll
    • good
    • 0
この回答へのお礼

さっそくATL関係の書籍をさがして読んでみます。
ありがとうございました。

お礼日時:2001/04/12 09:27

「複数のアプリケーションをマルチタスクで活用するソースプログラム」と言うのは間違いです。



まず、複数のアプリケーションから使えるかどうかは
DLLの作り方とそのインターフェースをどこまで公開
するかにもよります。また、DLLはDLLを呼び出す
呼び出しもとのアプリケーションが必要になります。
SUSIEプラグインがここで言うDLLに該当します。

また、マルチタスクで動作するかどうかも作り方
次第です。「スレッド」を意識した作りにする
必要があります。

最後にDLLは「ソースコード」から作成される
「プログラム」です。

P.S.
まずは一冊参考図書を買って読んだほうが良いですよ。
    • good
    • 0
この回答へのお礼

ご意見ありがとうございます。
ただ、どのような本を買っていいものか、わからなかったので、参考となるページやこの分野の名前とかを知りたかったのですが。。C言語の本も関数使用のことしか述べていないものが多かったものですから。参考URLを教えてもらえれば幸いです。

お礼日時:2001/04/11 15:45

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

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

Qどんなプログラムになるのかわからないのでプログラムを作って頂けませんか

どんなプログラムになるのかわからないのでプログラムを作って頂けませんか?

3分間英単語タイプ練習プログラム作ってを5日以上にわけて計25回以上実行します。

1 単語ファイルword.txtを単語数未知として読み込むこと.3975単語含まれているが,単語数をプログラムに直接書き込むことや実行時に与えることは禁止.
2 単語は一様乱数を用いてランダムに呈示すること.プログラム完成後,プログラムの先頭に「srand((unsigned)time(NULL));」を付加しなさい.これにより,実行時刻によって乱数シードが変わるから,異なった単語(系列)が呈示されることになる.
3 各回の得点は「正答した単語の文字数の総和」とする.
4 毎回「月/日/年-時:分:秒,得点」を結果ファイルscore.csvに追加的に書き込む(追記モード)。秒と得点の間のカンマは半角にする必要があることを注意しておく.

Aベストアンサー

とりあえず使いそうな関数だけ書いておきます。あとは調べてください。

fgets, fseek

とりあえずこれだけで作れる・・・かな?word.txtの中身が分からないですが、一行につき一単語のみが書いてあると仮定するとfgetsをループすれば単語数は求められます。

単語をメモリに格納した方が速度は早くなるのでそのときはfgets, malloc, freeで作れるかと。

ポインタは分かっていますか?
ポインタ分かってないとちょっと厳しいかも・・・

がんばってください。

Qc言語のプログラムです

2つの生の整数の割り算a÷bはaからbを繰り返し引いていき、引くことが出来なくなるまでの回数を商、その時の残りを剰余をすることで、引き算だけを用いて実現することができる。このことを考慮して、while文と引き算だけを用いて割り算を実現しなさい。という問題なんですけどどのようにプログラムを作っていいやらわかりません
一様ヒントはあります
・変数としては、入力する二つの整数に対応する変数m,n、商に対応する変数q、剰余に対応する変数rを使うとよいでしょう。すべて整数ですのでintで宣言する。
皆さんのご協力お願いします

Aベストアンサー

#include <stdio.h>

int main(int argc, char* argv[])
{
int m;
int n;
int q = 0;
int r = 0;

/*Aを入力する*/
printf( "\nA=" );
scanf( "%d", &m );

/*入力チェック*/
if( 0 > m )
{
printf( "\ninvalid input!\n" );
return -1;
}

/*Bを入力する*/
printf( "\nB=" );
scanf( "%d", &n );

/*入力チェック*/
if( 0 > n )
{
printf( "\ninvalid input!\n" );
return -1;
}
else if( !n )
{
printf( "\n0 division!!\n" );
return -2;
}

/*A<BになるまでA-Bを繰り返す*/
while( m >= n )
{
m = m - n;
++q;
}
r = m;

printf( "\nA/B=%d...%d\n", q, r );

return 0;
}

#include <stdio.h>

int main(int argc, char* argv[])
{
int m;
int n;
int q = 0;
int r = 0;

/*Aを入力する*/
printf( "\nA=" );
scanf( "%d", &m );

/*入力チェック*/
if( 0 > m )
{
printf( "\ninvalid input!\n" );
return -1;
}

/*Bを入力する*/
printf( "\nB=" );
scanf( "%d", &n );

/*入力チェック*/
if( 0 > n )
{
printf( "\ninvalid input!\n" );
return -1;
}
else if( !n )
{
printf( "\n0 division!!\n" );
return -2;
}

/*A<BになるまでA-Bを繰り返す*/
while( m >= n )
{
m = m - n;
++q;...続きを読む

QC言語でプログラムを再起動

 UNIXで動くC言語のプログラムを作っています。
 その際、プログラムを再起動させたい時があります。
 しかし、C言語でプログラムを再起動させるってどうやればいいのかよくわかりません。
 何かよいやり方を知っている方、教えてください。
 よろしくお願いします。

Aベストアンサー

関数execl()を使えばよいと思います。
この関数は、fork()と組み合わせて、他のプログラムを
起動するのに使うのが普通ですが、
fork()せずにexecl()を呼ぶと、自プロセスを指定された
プログラムに置き換えます。ですので、ここで自分自身を
指定すれば、再起動したことになるはずです。

Qc言語の文字列の逆順のプログラムがわかりません

文字列を逆順して出力するプログラミングがわかりません。
#include <stdio.h>
#include <string.h>

void reverse(char *moji, char *gyaku);

int main(void)
{
char x[30];
char y[30];

puts("文字を入力してください。\n");
scanf("%s", x);

reverse(x, y);

printf("逆順すると%sです。\n", y);

return (0);
}

void reverse(char *moji, char *gyaku)
{
int i, len;

len = strlen(moji);

gyaku = moji + len - 1;

for(i = 0; i < len; i ++){
putchar((int)*gyaku);
gyaku--;
}
}


理想とする実行結果は
文字を入力してください。
abcdefg
逆順するとgfedcbaです。

なんですが、
上記のソースを実行すると

文字を入力してください。
abcdefg
gfedcba逆順すると(謎の漢字)です。

となります。

どこがおかしいんでしょうか?
よろしくおねがいします。

文字列を逆順して出力するプログラミングがわかりません。
#include <stdio.h>
#include <string.h>

void reverse(char *moji, char *gyaku);

int main(void)
{
char x[30];
char y[30];

puts("文字を入力してください。\n");
scanf("%s", x);

reverse(x, y);

printf("逆順すると%sです。\n", y);

return (0);
}

void reverse(char *moji, char *gyaku)
{
int i, len;

len = strlen(moji);

gyaku = moji + len - 1;

for(i = 0; i < len; i ++){
putchar((int)*gyaku);
...続きを読む

Aベストアンサー

> gyaku = moji + len - 1;

 最終的な gyaku の終端を決めるのに moji は直接関係しません。moji の長さだけです。

#include <stdio.h>
#include <string.h>

void reverse( char *moji, char *gyaku )
{
 int len;

 len = strlen( moji );

 gyaku += ( len - 1 ); // moji とは直接関係なし

 while( *moji ){

  *gyaku = *moji;

  putchar( *gyaku );

  gyaku--;
  moji++;
 }
}
void main()
{
 char x[30] = "123456789";
 char y[30] = { 0x00 }; // 初期化

 reverse( x, y );

 printf( " 逆順すると %s です。\n", y );
}
注:インデントに全角空白を用いています。タブに一括変換して下さい。

> gyaku = moji + len - 1;

 最終的な gyaku の終端を決めるのに moji は直接関係しません。moji の長さだけです。

#include <stdio.h>
#include <string.h>

void reverse( char *moji, char *gyaku )
{
 int len;

 len = strlen( moji );

 gyaku += ( len - 1 ); // moji とは直接関係なし

 while( *moji ){

  *gyaku = *moji;

  putchar( *gyaku );

  gyaku--;
  moji++;
 }
}
void main()
{
 char x[30] = "123456789";
 char y[30] = { 0x00 };...続きを読む

QC言語のプログラムに関することで質問です。

C言語のライブラリを利用したプログラムのことで質問なのですが、座標xとyの成分から、ベクトルの角度(t)と大きさ(r)を求めるプログラムを作りました。しかし、このままのプログラムだと、ある場合のときに限り、正しい値が返されなくなるらしいのですが、それはどのような場合で正しい値が返されなくなってしまうのかを教えてください。また、正しい値がでるようにするにはどこをどう直したらよいのでしょうか?
自分でも考えてみたのですが、分からず困っています。分かる方どうかよろしくお願いいたします。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define square(x) ((x) * (x))

//ベクトルの角度θを返す関数
double theta(double x, double y)
{
return atan(y / x);
}

//ベクトルの大きさを返す関数
double radius(double x, double y)
{
return sqrt(square(x) + square(y));
}

int main(int argc, char **argv)
{
double x, y; //x, yは座標
double t, r; //t, rは極座標

if(argc == 3 && (x = atof(argv[1])) && (y = atof(argv[2])))
{
t = theta(x, y);  //極座標tを計算
r = radius(x, y); //極座標rを計算

  //ベクトルの角度と大きさを表示
printf("t = %f, r = %f\n", t, r);
}
return 0;
}

C言語のライブラリを利用したプログラムのことで質問なのですが、座標xとyの成分から、ベクトルの角度(t)と大きさ(r)を求めるプログラムを作りました。しかし、このままのプログラムだと、ある場合のときに限り、正しい値が返されなくなるらしいのですが、それはどのような場合で正しい値が返されなくなってしまうのかを教えてください。また、正しい値がでるようにするにはどこをどう直したらよいのでしょうか?
自分でも考えてみたのですが、分からず困っています。分かる方どうかよろしくお願いいたしま...続きを読む

Aベストアンサー

theta(0.0, 1.0) // x=0, y=1
theta(-1.0, -1.0) // x=-1, y=-1
theta(1.0, 1.0) // x=+1, y=+1

それぞれ、まずは、紙と鉛筆とで、求めてみてください。
/* 数学の問題になりますけど、わかりますか? */

その後、実際にこのプログラムでどんな値になるか、調べてください。
事前に求めたものと違う値が出るものがあるでしょう。
あるいは、まともに動かないかもしれません。

また、C標準ライブラリ関数のマニュアルも読んでください。
特に、math.hに関連する箇所を。atan関数もよく読んでください。


人気Q&Aランキング

おすすめ情報