ホーム   フォーラム   FAQ
 
メインメニュー
ログイン
ユーザー名:

パスワード:


パスワード紛失

VC++(CLR)で作成したDLLがMagicから認識されない

このトピックの投稿一覧へ

質問 VC++(CLR)で作成したDLLがMagicから認識されない

msg# 1
depth:
0
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 | 投稿日時 2016-5-19 16:17
Quantum  新米   投稿数: 3
いつもお世話になっております。

C++/CLRで作成したDLLをuniPaaS V1からCallDLLまたはコールUDPでコールしようとしております。

当初、開発版では問題なく呼べていたのですが、実行環境で実行すると「ユーザモジュールが見つかりません」と出てしまいます。

解決策をご教示いただければと思います。

詳細は以下の通りです。
・市販のSpreadsheetGearを利用するためのDLLを作成する。SpreadsheetGearはマネージコードでのみ動作するのでCLRでDLLを作成した。
・uniPaaS V1のバッチタスクから当初CallDLLでコールしていた。
・C++ではクラスメソッドではなく関数として実装している。
・自分の開発環境の開発版から実行するとuniPaaSからDLLを呼べている。
・自分の開発環境の実行版(Client V1\uniRTE.exe)から実行してもuniPaaSからDLLを呼べている。
・他のマシンの開発版から実行するとuniPaaSからDLLを呼べている。
・開発版をインストールしていないマシンの実行版から実行すると「ユーザモジュールが見つかりません」と出る。
・なお、SpreadsheetGearを使用しない関数でも同じメッセージが出る。

以下、参考のためソースを載せます。整数値を返す関数になります。(なのでSpreadsheetGearは使っていません)

<Test.h>
#pragma once

using namespace System;

namespace Test {

public ref class Class1
{
// TODO: このクラスの、ユーザーのメソッドをここに追加してください。
};
}


<Test.cpp>
// これは メイン DLL ファイルです。

#include "stdafx.h"
#include <windows.h>
#include "Test.h"
#include "userdll.h"


// Magicからコールしたい関数
long retnum()
{
return 111;
}


#define FUNC_CNT 1
/*-------------------------------------------------------------------------*/

static FUNC_DSC fdsc_tbl[FUNC_CNT] =
{
{ (Uchar *) "retnum", (void far *)retnum, 0, (Uchar *) "L" }
};

static EXT_MODULE ext_module =
{ 0, NULL_PTR, NULL_PTR, FUNC_CNT, fdsc_tbl, (Uchar *) "Test" };

void *MAGIC_BIND(void)
{
return (&ext_module);
}


<Test.def>
LIBRARY Test
EXPORTS
MAGIC_BIND
retnum


<userdll.h>
uniPaaSのインストールフォルダにあるものそのまま


以下試してみたことを記します。
・開発時はuserdll.hやMAGIC_BIND等を含めていなかったが、開発版では動いていた。
・CallDLLをCallDLLSやCallDLLFに置き換えても実行環境ではダメ。
・CallDLLをコールUDPに変えても、実行環境ではダメ。
・Visual Studioから生成されたDLL以外のファイルも、実行環境のV1 Plusフォルダの下に置いたがダメ。


過去スレも見ましたが、uniPaaS V1Plusのバッチタスクからは.NETのDLLは呼べないとあるのを見ましたが、それだと何故開発環境では動くのだろうかという疑問がわきます。

COMオブジェクトとして作れば可というのも見ましたが、それも実際やってみても動かずにおります。こちらはもう少しがんばってみます。

以上、長文となりましたが、何卒よろしくお願いいたします。
投票数:0 平均点:0.00

投稿ツリー

  条件検索へ


Copyright (C) Magic Software Japan K.K. All Rights Reserved.
個人情報保護方針 会員規約