GLS Developer's BBS
  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
10 / 17 ツリー ←次へ | 前へ→

GLS 3.00b L.Entis 03/5/18(日) 22:26
┗ Re:GLS 3.00b のえる 03/5/25(日) 0:24
 ┗ Re:GLS 3.00b L.Entis 03/5/25(日) 4:14
  ┗ Re:GLS 3.00b のえる 03/5/25(日) 13:10
   ┗ Re:GLS 3.00b L.Entis 03/5/25(日) 13:54

GLS 3.00b
 L.Entis  - 03/5/18(日) 22:26 -

引用なし
パスワード
   EntisGLS ver.3.00b を公開しています。
history.txt にも書いていますが、細々としたバグの修正、ドキュメントの細々とした加筆などが中心です。
それと、不足ヘッダファイルを追加してあります。
<Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.0.2) Gecko/20030208 Netscape/7.02@tokyo-fa1-66.kcom.ne.jp>

Re:GLS 3.00b
 のえる  - 03/5/25(日) 0:24 -

引用なし
パスワード
   ベクターの支払いもついに開始されましたね。
さっそくレジストさせていただきました(^^)

今、Visual Studio .NET 2003 を使ってEntisGLS3を利用させていただいていますが、
C++のランタイムライブラリが libcpmt.lib など p 付きに変更された影響か、
#include <iostream> や new などC++特有の機能を呼び出す前に linkgls.h を
includeしておかないとリンク順が逆になるようで new でリンクエラーに
なってしまう症状が出て悩みました。本当のところはよくわかりませんが……。

gls.lib(eslheap.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に libcpmt.lib(newop.obj) で定義されています。

stdafx.h の先頭で #include <linkgls.h> と書くようにして対処しました。
<Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6@FLH1Aae056.stm.mesh.ad.jp>

Re:GLS 3.00b
 L.Entis  - 03/5/25(日) 4:14 -

引用なし
パスワード
   ▼のえるさん:
> ベクターの支払いもついに開始されましたね。
> さっそくレジストさせていただきました(^^)

どうもありがとうございます。(ペコリ)

> 今、Visual Studio .NET 2003 を使ってEntisGLS3を利用させていただいていますが、
> C++のランタイムライブラリが libcpmt.lib など p 付きに変更された影響か、
> #include <iostream> や new などC++特有の機能を呼び出す前に linkgls.h を
> includeしておかないとリンク順が逆になるようで new でリンクエラーに
> なってしまう症状が出て悩みました。本当のところはよくわかりませんが……。
>
> gls.lib(eslheap.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に libcpmt.lib(newop.obj) で定義されています。

確かに、よくよく考えてみれば、このようなことはありえなくはありませんね…
手元では VC++5 で試してますから…(汗)
一応 VC++6 の環境もあるのですが、こちらは報告によれば大丈夫だったかな…、一度確認しておかないと…

すいませんが、以下の点について確認させていただいてもよろしいでしょうか?
・リンクエラーが発生したのは、MFC プロジェクトですか、それとも非 MFC プロジェクトですか?(stdafx.h ってことは MFC?)
・ヘッダの先頭と、終わり(linkgls.h を書いていいところとまずいところそれぞれ)の位置に以下のようなコードを挿入して、実際に _MFC_VER マクロが定義されているかどうかを確認してみてください。
#if !defined(_MFC_VER)
#error 又は #defined _MFC_VER 0x0421 で結果が変わるか?
#endif
#include <linkgls.h>
<Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.0.2) Gecko/20030208 Netscape/7.02@tokyo-fa2-85.kcom.ne.jp>

Re:GLS 3.00b
 のえる  - 03/5/25(日) 13:10 -

引用なし
パスワード
   > ・リンクエラーが発生したのは、MFC プロジェクトですか、それとも非 MFC プロジェクトですか?(stdafx.h ってことは MFC?)

Win32 コンソールプロジェクトで、MFCは使用していません。
stdafx.h、stdafx.c はウィザードが勝手に作成するもので、
stdafx.h には下記の内容があらかじめ記述されています。

#pragma once
#include <iostream>
#include <tchar.h>

いきなりiostreamがあるので、ここでひっかかっていました。

iostream や STL、stdio など拡張子なしのヘッダを指定する前に linkgls.h しておけば大丈夫です。

MFC だとグローバルスコープの operator new を置き換えないんでしたっけ?
今回のプロジェクトでは、_MFC_VER マクロは定義されていませんでした。

なお、gls3同梱のサンプルはすべて問題なくビルドできます。
(warningは結構でますけどね)
<Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.4b) Gecko/20030516 Mozilla Firebird/0.6@FLH1Aae056.stm.mesh.ad.jp>

Re:GLS 3.00b
 L.Entis  - 03/5/25(日) 13:54 -

引用なし
パスワード
   ▼のえるさん:
> iostream や STL、stdio など拡張子なしのヘッダを指定する前に linkgls.h しておけば大丈夫です。

なるほど、…となると、単純にリンク順の違いでそのようなことが起きているという感じなのかもしれませんね。
または、C++ライブラリのファイル名が変わった影響かもしれませんけど。

> MFC だとグローバルスコープの operator new を置き換えないんでしたっけ?
> 今回のプロジェクトでは、_MFC_VER マクロは定義されていませんでした。

MFC だと、グローバルの new は置き換えないようにしています。
MFC 自体がグローバルの new 演算子を持っていますから、同じようなリンクエラーがでます。

とりあえず、ご報告ありがとうございました。
今後のドキュメントのほうに反映させていただきます。
<Mozilla/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.0.2) Gecko/20030208 Netscape/7.02@tokyo-fa2-85.kcom.ne.jp>

  新規投稿 ┃ ツリー表示 ┃ 一覧表示 ┃ トピック表示 ┃ 検索 ┃ 設定 ┃ ホーム  
10 / 17 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
9038 C-BOARD v3.02 is not Free?