TransWikia.com

dllが開発環境のPCでは認識されるが他のPCでは認識されない

スタック・オーバーフロー 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

2 Answers

コメントで解決されたようですので、回答として編集・転記いたします。

コンパイルオプションに/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

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP