Technically, the CLR loads them. What you can do in C# (or in most managed languages) is P/Invoke the native functions, so long as the Tcl libs are resolvable (i.e., in the current process's current working directory - not the DLL's (though that may be the same as the process's current working directory) - or a directory in the PATH environment variable, the same as all executables in Windows). See the DllImportAttribute documentation in the .NET Framework SDK, as well as Consuming Unmanaged DLL Functions[^]. When you call a P/Invoke method, the CLR loads the native library, gets the proc, pushes your arguments on the stack, and executes the function. The return value is pushed on the stack (typically; depends on calling convention) and returned by the CLR to your managed code. So, you'll need to read the API documentation for Tcl. Chances are there'll be a setup function (to initialize the execution environment) and a function that will accept arguments (including the path to the Tcl script you want to execute). Getting the path to the Tcl script is easy: let the user specify it on the command line, using an OpenFileDialog, hard-code it (bad idea usually), or whatever.
Microsoft MVP, Visual C# My Articles