トップページ⇒tech
344コメント98KB

"Code of the Nerds" Digital Mars C/C++

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさんNGNG
高速かつ強力な最適化を誇るC/C++コンパイラ DMC
Win32からDOS, WanderWitch用アプリまで作れる DMC
でも日本ではWanderWitch関連以外の情報がほとんどない DMC
そんなDMCについて語り合いましょう。

WanderWitch関係の話題も大歓迎です。

公式HP:
http://www.digitalmars.com/

関連スレ:
D言語ドラフト一応読んだよ
http://pc2.2ch.net/test/read.cgi/tech/1003674814/l50
0002デフォルトの名無しさんNGNG
  ∧_∧
 ( ´∀`)< ぬるぽ
0003デフォルトの名無しさんNGNG
>>2 ガッ
00041NGNG
出勤前に上げときます。
0005名無しさん@EmacsNGNG
これってテスト版のみがフリーって事で合ってる?
0006デフォルトの名無しさんNGNG
>>5
間違ってます。その言い方だと、正式版や製品版があるみたいだけど
DMCは正式版がフリーです。
0007名無しさん@EmacsNGNG
>>6
あら、そうなんだ。
たまたま今公開されてるのがテストバージョンって事なんですな。thx!
0008デフォルトの名無しさんNGNG
次のバージョンのテスト版 『も』 公開されているだけで、テスト版だけが
公開されているわけじゃないですよ。

つか、以前は次バージョンのbeta版なんて公開されていなかった。
0009デフォルトの名無しさんNGNG
一応有料のCD版もあるけど
これはフリーで配布されてるコンパイラに加えて
IDEやMFC、ライブラリのソースが含まれてるもので
コンパイラ自体はどちらも同じ。

以前注文したら段ボールに包まれた火星柄のCDが
手書きの宛名で送られてきた。
0010デフォルトの名無しさんNGNG
SHELL32.DLL みたいな WINAPI (stdcall) 呼び出しのDLL に対するインポートライ
ブラリはどうやって作るの?

ふつーに implib で作ったら @n の部分が落ちたインポートライブラリが作られて、
リンクできなかった。
0011デフォルトの名無しさんNGNG
>>10
普通にimplibで出来るような気がするが…。
defファイルでエクスポート名を付け間違えてない?
0012デフォルトの名無しさんNGNG
#include <iostream>
using namespace std;

以上が受け付けなかったのですが、仕様が古いコンパイラですか?
0013デフォルトの名無しさんNGNG
>>12
STLport を入れると使えるようになります。
001412NGNG
>13

ソースをコンパイルしなさいってこと?・・・。(;;)
0015C++厨NGNG
DMCは元々入ってないぽい
0016デフォルトの名無しさんNGNG
>>12
digitalmars.com にDMC用のSTLport 4.5.3 が置いてあります。
コンパイル済みのライブラリも入ってます。
使い方は dm\stlport\readme.txt 参照のこと。
001712NGNG
C/C++を一から勉強しようとしているので、分割コンパイルとかmakefileとか
さっぱりわかりません。

ですからSTLportのバイナリを作れません (;;)
0018裕美子 ◆SMenjtDUeo NGNG
お久しぶりです。裕美子です。Cの老師を目指しています。
今、インフルエンザで出校停止です。
0019裕美子 ◆SMenjtDUeo NGNG
あれ、名前の隣の記号の並びがおかしい。いつものとちがう。
0020デフォルトの名無しさんNGNG
>>12
あの〜、自分でバイナリを作らなくても使えるんですけど…。

簡単にインスト方法を説明すると、
1. ttp://www.digitalmars.com/download/freecompiler.html から
 DMC 8.32 本体 (dm832c.zip) と Basic Utilities (bup.zip)、
 STLport 4.5.3 (stlport.zip) をダウンロード。
2. 解凍して、中身を同じディレクトリに入れる。(例えばC:\dm)
3. C:\dm\bin をPATHに追加
4. C:\dm\bin\sc.ini 内の INCLUDE 部分を↓のように書き換える。
 INCLUDE="%@P%\..\stlport\stlport";"%@P%\..\include";"%@P%\..\mfc\include";%INCLUDE%
 (先頭に「"%@P%\..\stlport\stlport";」を追加して「"%@P%\..\stl";」を削除)

あとは
C> dmc hoge.cpp
とすれば(エラーが無ければ)hoge.exe ができます。

オマケ:Platform SDKの最新版やBoostを使う方法
ttp://cmeerw.org/prog/dm/
002112NGNG
>20
ありがとうございました。sc.iniの書き方がわからないので
そのままコピーしてコンパイルしてみました。しっかり成功しました。

しかし。。。。

フリーのBCCコンパイラと比べると、生成された実行ファイルのサイズが
3倍ほどデカいのです。-oのオプションもつけましたが・・・。

こんなものですかね。
0022デフォルトの名無しさんNGNG
STLPortのせいじゃない?
0023デフォルトの名無しさんNGNG
確かにSTLportを使うと "Hello,World" 表示させるだけでも
300KBを超えますね。
CやSTLportを使わないC++だと、かなりサイズが小さくなるんですが…。

ところで Digital Mars ってどういう団体(?)なんでしょうか?
Walter Brightが個人でやってるのかな?
0024デフォルトの名無しさんNGNG
Zortech age
0025営農ギコMC ◆cJTGtEIXl. NGNG
>>23
同人っぽいんじゃないかと勝手に予想。

で、DMC
0026営農ギコMC ◆cJTGtEIXl. NGNG
を買った>>9さん、どんな方法でオーダーした?
(途中で切れてもうたw)
00279NGNG
>>26
私はPaypalを使って注文しました。
申し込んでから2週間くらいでCDが到着したと思います。

ちなみにCDの中身はインストーラなどはなく、
\dm以下に全てのファイルがディレクトリ構造ごと入っていて
まるごとHDDにコピーして使うようになってました。
0028営農ギコMC ◆cJTGtEIXl. NGNG
>>27
サンクス。
漏れもDMCのCD( ゚д゚)ホスィんだけど、Credit Card 持ってないもんで・・・。
とりあえず彼らに連絡してみる。
0029デフォルトの名無しさんNGNG
こんな物まで売ってたのね…
ttp://www.cafepress.com/digitalmars
0030営農ギコMC ◆cJTGtEIXl. NGNG
>>29
微妙にカコ(・∀・)イイw
0031デフォルトの名無しさんNGNG
コンパイルオプションが分からん・・・。
と思って調べたら、ドキュメントはあるね。
ftp.digitalmars.com/Digital_Mars_C++/Doc/*.zip
なんか古いけど・・・とりあえずここのまま使えるみたい。
Webサイトの方にはなんも書いてないのは何故?
0032デフォルトの名無しさんNGNG
>>31
ttp://digitalmars.com/ctg/ctg.html

こっちもまとめてDLできるようにしてホスィ・・・
0033デフォルトの名無しさんNGNG
16bitではSTLportが使えんのか…。
ちょっと残念。
0034デフォルトの名無しさんNGNG
DMC++ 8.33.7 beta release age

> Some minor fixes - internal errors, fp code generation, and a fix for FC++.

ttp://www.digitalmars.com/drn-bin/wwwnews?c%2B%2B.beta/50
0035デフォルトの名無しさんNGNG
ここのD言語に興味がある
0036デフォルトの名無しさんNGNG
>>35
是非D言語スレを盛り上げてくれ。いやマジで。
http://pc2.2ch.net/test/read.cgi/tech/1003674814/
0037デフォルトの名無しさんNGNG
Digital Mars C/C++ 8.33 release age
今回の変更点は細かなバグフィックスが中心。

しかし盛り上がらんなぁ。
やっぱり人気無いのかな…。
0038デフォルトの名無しさんNGNG
coff2omfは重宝している
0039営農ギコMC ◆cJTGtEIXl. NGNG
>>38
coff2omf って既に Shareware 扱い・・・。゜д゜)鬱死・・・

まぁ、前あったやつでも十分使えるし、CD 買えば付いてくるだろうし。
0040デフォルトの名無しさんNGNG
>>37

わしは DOS 用のバイナリ作るのに使ってるぞ。
しかし、Watcom と違って、この扱いの小ささは謎だな。

元 Symantic(Zortech) C/C++ であってるよな!
0041デフォルトの名無しさんNGNG
obj2asmもShareware化か…
ftpからダウンロードしていたので気づかなかった

>>40
まあWatcomはオープンソース化ということもあるし
0042デフォルトの名無しさんNGNG
なるほど、ftpからたどっていくと・・・。

まあ、俺はCD買ったから関係ないけど。
0043デフォルトの名無しさんNGNG
次のバージョンには STLSoft がバンドルされるそうだがどうよ?

ていうか、STLSoft って何ですか?
日本語の情報が見つからない…。
0044デフォルトの名無しさんNGNG
STLportの間違いじゃネーノ?
と思ったけど違っターーー!
ttp://synesis.com.au/stlsoft/

よくnewsgroupなんてチェキしてるね。>>43
0045デフォルトの名無しさんNGNG
チョキってなに?
0046デフォルトの名無しさんNGNG
じゃんけんの手のひとつだ。
パーには勝ってグーには負ける。

というか板違いだゾ(w
0047デフォルトの名無しさんNGNG
nerdだからいーんじゃね?
0048デフォルトの名無しさんNGNG
0049山崎渉NGNG
   ∧_∧
  (  ^^ )< ぬるぽ(^^)
0050デフォルトの名無しさんNGNG
0051デフォルトの名無しさんNGNG
age
0052デフォルトの名無しさんNGNG
hage
0053デフォルトの名無しさんNGNG
obj2asmが無いってエラー出て使えネエ
0054デフォルトの名無しさんNGNG
DMC++ 8.34.7 beta リリース age

8.33 からの主な変更点は:
 ・template, enum, 〜?〜:〜 の修正
 ・大きなスタック・フレームに対する問題の修正
 ・インライン・アセンブラの movq2dq のオペランド(?)が逆になっていたのを修正
 ・swprintf/vswprintfの引数をC99の仕様に合わせて変更
 ・インライン・アセンブラにfeni, fneni, fdisi, fndisiを追加
 ・-A オプション(ANSI C/C++互換)使用時のstdlib.h, string.hの問題点を修正
0055デフォルトの名無しさんNGNG
>>53
obj2asmは有料になっちゃったから、フリー版では事実上 -cod が使えないね…

*.objからリストファイルを作るだけなら OpenWatcom の wdis.exe で出来るよ。
0056山崎渉NGNG
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉
0057デフォルトの名無しさんNGNG
Walterタン、beta版のうp間隔短すぎ・・・
0058デフォルトの名無しさんNGNG
 ー┼──          |       ー───  |     、   | ー─-    /  |      、   /
    |  _           |/ ̄    ー──   |      |  |       /    |      |   /
   |/  \         /       ー──   |      |  |       \    |      |  /^ヽ
        |  ├  ー-、|        | ̄ ̄|    ヽ'       レ  ̄ ̄    \   ヽ'       /   \丿
     _/  O-   ノ \__     ̄ ̄


               ー┼── | |  | ─|─  |    | |
                     | ー─    |  │   |/ ̄
                 | \_    |   |   (___


    _,,. -─‐- .,,_           _,,. -─‐- .,,_
   |_____   ___l ┌───┐│___   │
  ┌─┘ └─┐└─┐  │      │  │
  └─┐ ┌─┘ l二二.   │      │  │
       !   ,!    ┌─┘  │┌──┘  │
     └─' .     └───┘└────┘
    ___|  ̄ |_○,○       | ̄ ̄ll ̄ ̄|
    |__    __|┌──┐|    l.l    |
   ,'⌒',│  │,'⌒', l_______l.l    l |    !_,. ィ
    !  l│  │!  l     l   ,' |       ,!
   ゝ_ノ│  │ゝ_ノ      |__/.  !、_,,. ‐'
.        ̄
0059デフォルトの名無しさんNGNG
8.34
0060デフォルトの名無しさんNGNG
 DMCでWindowsプログラムのC言語ソースファイルをコンパイルするとエラーになるけど、
何かオプションの指定が必要なのかな。
0061デフォルトの名無しさんNGNG
>>60
どんなエラーが出たのか書かないと、答えようがないぞ。

普通は
> dmc hoge.c
でコンパイル出来るが、実行するときにコンソールが開く。

(コンソールアプリではない)Windowsプログラムを作るときは
> dmc -WA -L/SU:WIN hoge.c
0062デフォルトの名無しさんNGNG
ここのC/C++コンパイラって
何らかの形でDbCつかえるの?
int func(int a)
{
  __in
  {
  }
  __out(int result)
  {
  }
  __body
  {
  }
}
こんなん。
0063デフォルトの名無しさんNGNG
>>62
http://www.digitalmars.com/ctg/designbycontract.html
int func(int a)
  __in
  {
  }
  __out(result)
  {
  }
  __body
  {
  }
0064デフォルトの名無しさんNGNG
DMC++ 8.35.4 beta リリース age
今回はBug Fixのみ
0065デフォルトの名無しさんNGNG
最近導入してみたのですが関連リンクとかありませんか?
0066デフォルトの名無しさんNGNG
>>65
・Digital Mars Home Page(コンパイラ、オンラインマニュアル等)
ttp://www.digitalmars.com/

・Christof Meerwald's Some Digital Mars C++ Information
(最新のPlatform SDKを使う方法等)
ttp://cmeerw.org/prog/dm/

・WonderWitch サポートWebサイト(日本ではこれ用途がほとんど?)
ttp://wonderwitch.qute.co.jp/

・無料で揃えるプログラミング環境(「第4章. C++」にDMCの解説あり)
ttp://www7.plala.or.jp/hop-step-jump/prog00.html

Digital MarsのHPからDLできるソフトの本家
・Hans Boehm's GC web site
ttp://www.hpl.hp.com/personal/Hans_Boehm/gc/
・X-32 DOS Extender
ttp://www.dosextender.com/
・STLport
ttp://www.stlport.org/
・STLSoft
ttp://synesis.com.au/stlsoft/


・Unofficial Digital Mars Compiler Site
(非公式サイト?)
ttp://pysmatic.com/digitalmars/
0067O塚NGNG
http://life.fam.cx/a005/



0068無料動画直リンNGNG
http://homepage.mac.com/miku24/
0069デフォルトの名無しさんNGNG
>>66
thx
あんまり日本は情報が出てないのかな。
0070デフォルトの名無しさんNGNG
>>69
せっかくだから君がなんか日本語情報ページ書いてけれ。
0071デフォルトの名無しさんNGNG
>>70
面白そうですね。
でも必要な情報ってなんでしょう。
0072山崎 渉NGNG

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄
0073デフォルトの名無しさんNGNG
beta 8.35.5
0074_NGNG
http://homepage.mac.com/hiroyuki44/
0075デフォルトの名無しさんNGNG
メモ帳作ってみたいんだが公式のどこを読めばいいの?
0076山崎 渉NGNG
(^^)
0077山崎 渉NGNG
    (⌒V⌒)
   │ ^ ^ │<これからも僕を応援して下さいね(^^)。
  ⊂|    |つ
   (_)(_)                      山崎パン
0078デフォルトの名無しさんNGNG
うはぁ寂れてる(ノД`)・゚・。
Win32GUIなプログラムをコンパイルしてみたらGetStockObjectがリンク
できないエラーが出た。
PlatformSDKの最新版もってきて入れないとダメなのかな?
0079デフォルトの名無しさんNGNG
>>78
# CD版+PSDK入れてるから確認はしてないけど…

Win32APIを使うときはライブラリを明示的に指示する必要があるようです。
dm\GDI32.lib にGetStocckObjectが入っているので

dmc -WA -L/subsystem:windows hoge.c gdi32.lib

の様にすれば、うまくいくと思います。
0080デフォルトの名無しさんNGNG
>>79
こんな時間にレスありがとうございます。
-l gdi32.dllってしてたのが悪かったってかドキュメントちゃんと読もう…。
0081デフォルトの名無しさんNGNG
DMCでDLLってどうやって作ればいいんだろう。
dmc -WD -L/SU:WIN hoge.cpp hoge.def
とかやってもエラー出てexe作られてるし…。
0082デフォルトの名無しさんNGNG
>>81
exeファイルができるってことは hoge.def の内容が間違っているのでは?

とりあえず、「猫でもわかるプログラミング」のサンプルをコンパイルしてみると
ttp://www.kumei.ne.jp/c_lang/sdk2/sdk_119.htm

1. DLLとインポートライブラリを作成
C:\hoge>dmc -WD -L/implib dll01.cpp kernel32.lib gdi32.lib
  * DLLを作るときは user32.lib、kernel32.lib も含めて必要なライブラリを明示する。
  * OPTLINKの/IMPLIBオプションまたはimplib.exeでインポートライブラリを作成する。

2. 実行ファイルの作成
C:\hoge>dmc -WA -L/su:win test01.cpp gdi32.lib dll01.lib
  * -WA -L/SU[BSYSTEM]:WIN[DOWS] でWin32 ウィンドウアプリケーションを作成。
  * GDI関係の関数を使っているので gdi32.lib をリンクする。
  * 1.で作ったインポートライブラリをリンクする。
  * user32.lib、kernel32.lib は自動的にリンクされる。

.def ファイルの書式は上の例で自動的に作成される dll01.def や
オンラインマニュアルを参考にして下さい。
ttp://www.digitalmars.com/ctg/ctgDefFiles.html
0083デフォルトの名無しさんNGNG
DirectXは?OpenGLは?
0084デフォルトの名無しさんNGNG
>>82
ありがとうございました。
ご指摘の通りdefの書式が間違ってました。
0085デフォルトの名無しさんNGNG
>>83
DirectX
ttp://www.digitalmars.com/faq.html#directx

OpenGL
ftp://ftp.microsoft.com/Softlib/MSLFILES/OpenGL95.exe

ただし、どちらもcoff2omf.exeが必要。
0086デフォルトの名無しさんNGNG
>>83
DirectX7だけど
ttp://fancyrara.ddo.jp/program/DMC/DMC.html
0087デフォルトの名無しさんNGNG
coff2omfはDMのサイトだとshareware扱いになってるがBCCについて
なかったっけ?
DMのFTPのぞいたらあったけどさ。
0088デフォルトの名無しさんNGNG
COFF形式が扱えるOpenWatcomのwlinkを使って
MSのライブラリと直接リンクさせる方法もある。
ttp://cmeerw.org/prog/owtools/
0089デフォルトの名無しさんNGNG
今更だけど Version 8.35 age

コンパイラ(scppn)のバージョンは 8.35.10n
今回はコンパイラドライバもVer Upして 8.35n になってる。
0090デフォルトの名無しさんNGNG
8.36 リリース age
主にBoostと 8.35での問題点を修正

あとwxWindows関係でnewsgroupから
> C:\wx\wxWindows\samples\minimal>scppn
> Digital Mars C/C++ Compiler Version 8.36.1n
> Copyright (C) Digital Mars 2000-2003. All Rights Reserved
>
> This version compiles wxWindows library and minimal sample from CVS
> (head and 2.4 branch) with no bugs
0091デフォルトの名無しさんNGNG
阿呆らしい質問かも知れませんが教えて下さい。
STLを使ったWin32Appを作ろうと思って
#include <windows.h>
#include <string>
としたのですがコンパイルできません。
同一のソースをBCCでコンパイルしてみると通るのですが何か間違ってる部分
がありますでしょうか?
8.36にSTLPortを使うようにしてあります。
0092デフォルトの名無しさんNGNG
>>91
どこで、どのようなエラーが出てコンパイルできないのか
具体的に書いてもらわないと答えようがないのですが・・・。
0093デフォルトの名無しさんNGNG
は、そうでした申し訳ありません。
例えば
#include <windows.h>
#include <iostream>
int main(void){
std::cout << "test" << std::endl;
return 0;
}
をコンパイルしようとすると
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedIncrement(long*);
^
d:\dm\bin\..\stlport\stlport\stl/_threads.h(122) : Error: 'InterlockedIncrement'
previously declared as something else
It was declared as: long __import (__import std func)(long volatile *)
It is now declared: long __import (__import std func)(long *)
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedDecrement(long*);
^
d:\dm\bin\..\stlport\stlport\stl/_threads.h(123) : Error: 'InterlockedDecrement'
previously declared as something else
It was declared as: long __import (__import std func)(long volatile *)
It is now declared: long __import (__import std func)(long *)
_STLP_IMPORT_DECLSPEC long _STLP_STDCALL InterlockedExchange(long*, long);
^
d:\dm\bin\..\stlport\stlport\stl/_threads.h(124) : Error: 'InterlockedExchange'
previously declared as something else
It was declared as: long __import (__import std func)(long volatile *,long )
It is now declared: long __import (__import std func)(long *,long )
--- errorlevel 1
となります。
0094デフォルトの名無しさんNGNG
>>93
DMCでSTLportを使うときは
  C> dmc -IC:\dm\stlport\stlport test.cpp
のように-I オプションでSTLportをインストールしたディレクトリを指定するか、
sc.ini の「INCLUDE=」にSTLportをインストールしたディレクトリを
 "%@P%..\include", "%@P%\..\stl"よりも前に 追加してください。
(この場合 -IC:\dm\stlport\stlport は不要)

また、標準でついてくるSGIのSTLを使わないのであれば
"%@P%\..\stl" の部分は削除してもかまわないでしょう。

INCLUDE="%@P%\..\include";"%@P%\..\mfc\include";"%@P%\..\stl";%INCLUDE%
   ↓
INCLUDE="%@P%\..\stlport\stlport";"%@P%\..\include";"%@P%\..\mfc\include";%INCLUDE%
009591NGNG
>>94
sc.iniのINCLUDEはこうなっているのですが…。
INCLUDE="%@P%\..\stlport\stlport";"%@P%\..\include";"c:\Program Files\Microsoft SDK\include";%INCLUDE%
0096デフォルトの名無しさんNGNG
>>95
Platform SDKを使っているのなら
stlport\stlport\stl_user_config.hの184行目辺りにある
// #define STL_NEW_PLATFORM_SDK 1
の前にあるコメントを外して STL_NEW_PLATFORM_SDK
の定義を有効にしてみて下さい。
009791NGNG
>>96
あああ、いけました(ノД`)・゚・。
ありがとうございました。
0098デフォルトの名無しさんNGNG
wxWindowsを使ってみようとインストールしたら
..\..\lib\wx_sc.lib(dataobj)
Error 42: Symbol Undefined _IID_IDataObject
とか言われてコンパイルできない…。

8.37.3 beta入れたらwxライブラリのコンパイル中にエラーが出るようになっちゃったし……。
wxVariant variant( wxString( (wxChar*) (data->GetValue().Nth(idx)->Data()) ));
                             ^
..\..\src\common\variant.cpp(1866) : エラー: ')' でなければならない
ってどういうことなの? (つД`)
0099デフォルトの名無しさんNGNG
DMCでWin32アプリを作っていたのですが、ダイアログボックスの色が
真っ白になってしまうのはなんとかならないのでしょうか?
試しにBCCでやってみたらきちんとダイアログの色になってたので、DMC
特有だと思うのですが…。
環境はbeta8.37+PlatformSDKです。
0100デフォルトの名無しさんNGNG
>>98
本家のFAQにのっているものではないでしょうか?
http://www.digitalmars.com/~arjan/
違ってたらすいません。
0101デフォルトの名無しさんNGNG
windows プログラムを作るとメニューの日本語が
文字化けしちゃうのですが、いかがいたしましょう?
■ このスレッドは過去ログ倉庫に格納されています