スタック・オーバーフロー Asked by Jogenara on December 26, 2021
visual c++ 2017 でx86 Native Tools Command Prompt for VS 2017からdllを作成しました。
開発環境ではそのdllは正しく動いたのですが、そのdllを他のpcにコピーしたところ認識されませんでした。(dllが認識されていればアプリケーションで現れるはずの選択肢が現れない)
エラーなどは全くでていません。
ライブラリが足りないのかと思いg++の-staticに相当するリンクオプションを探してみたのですが、見つからず、どうしていいかわからなくなってしまいました。
どうすれば開発環境以外のPCでもdllを認識させられるでしょうか
よろしくお願いします。
makefileは以下のようになっています。
CORE_DIR = ../..
MY_DIR = e:/irensei19
CC = cl
CFLAGS = /c -I../.. -I$(MY_DIR) -
I$(MY_DIR)/tiny-dnn-1.0.0a2 /F 67108864 /bigobj /O2 /arch:AVX /EHsc
OBJS = airandom.obj game.obj StringData.obj
irensei_rule_description.obj
irensei_ai_descripter.obj
Init.obj Point.obj PointSet.obj Board.obj
MyGame.obj MinSet.obj Territory.obj MCTAI.obj
MCTAI2.obj MCTAI3.obj MCTAI4.obj UCTNode.obj
Board8.obj PointSet8.obj Board13.obj
PointSet13.obj DataBase.obj Pattern13.obj
Pattern19.obj Feature.obj DNNAI.obj DNNAI2.obj
DNNMove.obj TestAI.obj
OBJS2 = Init.obj Point.obj PointSet.obj
Board.obj MyGame.obj MinSet.obj Territory.obj
MCTAI.obj UCTNode.obj
Board8.obj PointSet8.obj Board13.obj
PointSet13.obj MCTAI2.obj DataBase.obj
airandom.dll: $(OBJS)
$(CC) /LD -O2 $(OBJS)
cp airandom.dll e:irensei
Init.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Init.cpp
Point.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Point.cpp
DataBase.obj:
$(CC) $(CFLAGS) $(MY_DIR)/DataBase.cpp
PointSet.obj:
$(CC) $(CFLAGS) $(MY_DIR)/PointSet.cpp
Board.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Board.cpp
MyGame.obj:
$(CC) $(CFLAGS) MyGame.cpp
MinSet.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MinSet.cpp
Territory.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Territory.cpp
MCTAI.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI.cpp
MCTAI2.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI2.cpp
MCTAI3.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI3.cpp
MCTAI4.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI4.cpp
MCTAI_mt.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI_mt.cpp
MCTAI_mt2.obj:
$(CC) $(CFLAGS) $(MY_DIR)/MCTAI_mt2.cpp
TestAI.obj:
$(CC) $(CFLAGS) $(MY_DIR)/TestAI.cpp
DLAI.obj:
$(CC) $(CFLAGS) $(MY_DIR)/DLAI.cpp
EvalAI.obj:
$(CC) $(CFLAGS) $(MY_DIR)/EvalAI.cpp
Feature.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Feature.cpp
Board8.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Board8.cpp
PointSet8.obj:
$(CC) $(CFLAGS) $(MY_DIR)/PointSet8.cpp
Board13.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Board13.cpp
PointSet13.obj:
$(CC) $(CFLAGS) $(MY_DIR)/PointSet13.cpp
Pattern13.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Pattern13.cpp
Pattern19.obj:
$(CC) $(CFLAGS) $(MY_DIR)/Pattern19.cpp
EvalDL.obj:
$(CC) $(CFLAGS) $(MY_DIR)/EvalDL.cpp
DNNAI.obj:
$(CC) $(CFLAGS) $(MY_DIR)/DNNAI.cpp
DNNAI2.obj:
$(CC) $(CFLAGS) $(MY_DIR)/DNNAI2.cpp
DNNMove.obj:
$(CC) $(CFLAGS) $(MY_DIR)/DNNMove.cpp
UCTNode.obj:
$(CC) $(CFLAGS) $(MY_DIR)/UCTNode.cpp
airandom.obj: airandom.cpp
$(CC) $(CFLAGS) airandom.cpp
aiirandom.obj: aiirandom.c
$(CC) $(CFLAGS) aiirandom.c
game.obj: $(CORE_DIR)/game.cpp
$(CC) $(CFLAGS) $(CORE_DIR)/game.cpp
StringData.obj: $(CORE_DIR)/StringData.cpp
$(CC) $(CFLAGS) $(CORE_DIR)/StringData.cpp
irensei_ai_descripter.obj:
$(CORE_DIR)/irensei_ai_descripter.c
$(CC) $(CFLAGS)
$(CORE_DIR)/irensei_ai_descripter.c
irensei_rule_description.obj:
$(CORE_DIR)/irensei_rule_description.c
$(CC) $(CFLAGS)
$(CORE_DIR)/irensei_rule_description.c
clean:
rm *.obj *.dll
コメントで解決されたようですので、回答として編集・転記いたします。
コンパイルオプションに
/arch:AVX
を付けていたのですが、他のパソコンというのがかなり古いパソコンでAVXを搭載してなかったのが原因みたいです。
/arch:SSE2
にしたら選択肢が現れました。今時AVXもないとは…
ちなみにDependenciesはビルドしようとしたらエラーになったのでとりあえずDependency walkerで見てみたら依存関係はOKでした。
Answered by payaneco on December 26, 2021
g++の-staticに相当するリンクオプション
CFLAGS
に/MT
を追加するのはどうでしょうか?
Answered by sayuri on December 26, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP