自社製のライブラリを使用してPCゲーム開発をしています。
今回、ゲームにネット接続の機能を持たせることとなりました。
ネットゲーム、というほどのものでもなく、
特典のデータがダウンロードできる、といった程度ですが。
コレのためにFTPダウンロードの仕組みを試作しました。
検証用のコンソールアプリケーションではうまくいったのですが、
いざゲームプログラムに組み込んだところ、
nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に (自社製ライブラリ).lib(Allocator.obj) で定義されています。
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に (自社製ライブラリ)..lib(Allocator.obj) で定義されています。
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new[](unsigned int)" (??_U@YAPAXI@Z) は既に libcpmtd.lib(newaop.obj) で定義されています。
1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete[](void *)" (??_V@YAXPAX@Z) は既に LIBCMTD.lib(delete2.obj) で定義されています。
1>C:\Users\New Challenger\PROGRAMING\(開発中).exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
というエラーが発生。
「http://support.microsoft.com/kb/148652/ja」 の説明を参考に対処してみたところ、
1>(自社製ライブラリ).lib(Allocator.obj) : error LNK2005: "void * __cdecl operator new(unsigned int)" (??2@YAPAXI@Z) は既に nafxcwd.lib(afxmem.obj) で定義されています。
1>(自社製ライブラリ).lib(Allocator.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) は既に nafxcwd.lib(afxmem.obj) で定義されています。
1>C:\Users\New Challenger\PROGRAMING\(開発中).exe : fatal error LNK1169: 1 つ以上の複数回定義されているシンボルが見つかりました。
となってしまうのですね。
ぶつかり合っている両者のうちの、どちらかがなければエラーを避けられるのは確かなんですが、
自社製ライブラリの方のnew/deleteも、アプリケーションの仕組みに合わせて変形させてあるものなので取っ払ってしまうわけにもいかず、、、
何かうまいこと共存させる方法はないものでしょうか?
自社製のライブラリではありますが、
開発者の方が今現在社を離れているためすぐに回答を得られないので、
広く知恵を貸していただきたいのです。
No.1ベストアンサー
- 回答日時:
スマートな方法とはいえませんが
リンカーのオプションで
「/FORCE 未解決または複数定義のシンボルがある場合でも、リンクを強制的に終了します。」
というオプションがあります。
http://msdn.microsoft.com/ja-jp/library/y0zzbyt4 …
nafxcwd.libと(自社製ライブラリ).libの、
リンク順を入れ替えて意図通りのnewが呼ばれるように制御できるかもしれません。
※実際試したわけではないので、できるかどうかはわかりません。
もし(自社製ライブラリ).libを修正できるなら
http://www2.research.att.com/~bs/bs_faq2.html#pl …
が参考になるかもしれません。
回答ありがとうございます。
早速、お教えいただいたことを参考に、いろいろと試してみたいと思います。
本当なら、
「うまくいきました、ありがとう!」
といいたいのですが、
まだちょっと実装と検証に時間がかかってしまいそうなので。
まずはなにより、お答えをいただけたことにお礼申し上げます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# leetcode 155 minstack 1 2022/05/07 16:43
- サーバー WindowsでApache が起動しない 1 2022/11/29 12:21
- オープンソース Vue+Laravelのデザインテンプレートのサンプルが起動できない 1 2022/05/18 21:52
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- JavaScript EasyUIのSubGrid(jquery)におけるObjectに入れた連想配列について 1 2022/05/02 11:21
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
- その他(プログラミング・Web制作) Pythonで会員サイトの自動ログイン ID Nameがない 1 2022/12/16 02:09
- Visual Basic(VBA) VBAのコードで Dim Obj As AccessObject でコンパイルエラーがでます。 「ユ 2 2022/07/01 06:57
- PHP jpgraphで表示されない 2 2022/10/22 09:12
- PostgreSQL PostgreSQLで"pg_dumpall -f data.sql"を使ってバックアップしたデータ 2 2022/09/19 08:14
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C++Builder リンカエラーとは?
-
'd3dx9.lib' が開けません。
-
音声ファイルを流すには・・・
-
ShellExecute関数について(初...
-
DirextXエラー:ファイル'dxerr9...
-
静的/動的リンクライブラリにつ...
-
Cygwinでのライブラリの使い方
-
lvwReport/エラー/プロジェクト...
-
gdi+ LNK1103
-
Makefileと共有ライブラリ
-
python エラー
-
エクセルのエラーメッセージ「4...
-
アプリケーションのDLLファイル...
-
VC++2008でのサンプルプログ...
-
共有ライブラリの内容確認について
-
<unistd.h>をVisualStudioでつ...
-
Fortran の定数表現について
-
Makefile作成時の拡張子.oとは?
-
実行後にコンパイルに失敗しま...
-
Arduinoに関する質問
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スタティックライブラリ関係の...
-
スタティックリンクライブラリ...
-
fatal error LNK1104: ファイル...
-
VC++6.0からVC++.NET2005へ移植
-
error LNK2001: 外部シンボル "...
-
C++Builder リンカエラーとは?
-
#include <winreg.h>をインクル...
-
タイプライブラリのレジストリ...
-
【VS2008 C++】2つのプロジェ...
-
#pragma commentの相対パス指定
-
'd3dx9.lib' が開けません。
-
'stdafx.h'のエラーに関して
-
VC++でビルド時の、リンク警告 ...
-
「MFCを使用しない」から「MFC...
-
error LNK2019: 未解決の外部シ...
-
静的/動的リンクライブラリにつ...
-
MP3の再生
-
dllかlibか
-
C++によるPostgreSQLの接続
-
visual studio community2017 O...
おすすめ情報