首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >调用VB.NET DLL的Tcl扩展

调用VB.NET DLL的Tcl扩展
EN

Stack Overflow用户
提问于 2012-02-08 15:16:25
回答 2查看 743关注 0票数 1

我需要创建一个调用托管.NET DLL/类库的Tcl扩展。目前,我的应用程序的结构是Tcl > DLL包装器(C++ CLR) > .NET类库(VB.NET),其中">“表示函数调用。

我的VB.NET DLL只是取一个值并返回它,暂时保持简单。最后,这将做一些更高级的事情,利用一些.NET功能。

代码语言:javascript
运行
复制
Public Class TestClass
    Public Function TestFunction(ByVal param As Integer) As Integer
        Return param
    End Function
End Class

我的Tcl扩展(C++ CLR)创建了上述类型的对象。

代码语言:javascript
运行
复制
int TestCmd(ClientData data, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[])
{
    // Check the number of arguments
    if (objc != 2) {
        Tcl_WrongNumArgs(interp, 0, objv, "arg");
        return TCL_ERROR;
    }

    int param, result;

    if (Tcl_GetIntFromObj(interp, objv[1], &param) != TCL_OK)
        return TCL_ERROR;

    SimpleLibrary::TestClass^ myclass = gcnew SimpleLibrary::TestClass(); //System.IO.FileNotFoundException
    result = myclass->TestFunction(param);

    Tcl_SetObjResult(interp, Tcl_NewIntObj(result));
        return TCL_OK;
}

最后,我的Tcl脚本加载扩展并调用函数。

代码语言:javascript
运行
复制
load SimpleTclExtension.dll
TestCmd 2

如果我的VB.NET DLL与我的扩展DLL位于同一个目录中,则当它实例化TestClass对象时,扩展会崩溃。我注意到,如果将VB.NET DLL重新定位到C:\Tcl\bin,扩展将找到它,并且可以很好地调用TestCmd。问题是,这将最终需要部署在多台PC上,而且它更倾向于不将我的应用程序的文件与另一个应用程序的文件混合。

似乎应该有一些配置设置来解决这个问题,但我不确定在哪里。任何帮助都是非常感谢的。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9196073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档