English help on website



createobject関数(Ver8.97対応版)
目次COMの呼び出しcreateobject関数− .net 5, .net core系
管理者による登録なしでの作成(.net 5, .net core系)

.net 5, .net core 3.1でCOMとして公開可能でIDispatchに対応したDLLを作成している場合、末尾に.comhost.dllというファイル名のDLLも同時に生成されます。
例えばSample.dllというDLL本体があった場合、Sample.comhost.dllというDLLがセットでできます。
V8.97以降では、.comhost.dllというファイル名が付いたDLLは、C++等のネイティブコードと同じ互換性のある形式で扱うことが可能です。

例:
#obj=createobject(@"C:\Folder\Sample32.comhost.dll","{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}");
例:
#obj=createobject(@"C:\Folder\Sample64.comhost.dll","{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}");


DLL側でIDispatchに対応するには、以下の条件を満たす必要があります。

サンプル
GUIDのxxxx...の部分には、guidgenから生成する独自のGUIDを指定してください。
test.cs
using System;
using System.Runtime.InteropServices;

namespace TestCOMServer
{
    [ComVisible(true)]
    [Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]
    public class TestServer
    {
        public int TestMethod()
        {
            return 123;
        }
    }
}
test.mac
#obj = createobject( @"C:\Folder\TestCOMServer.comhost.dll", "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" );
message str(member(#obj, "TestMethod" );