これでいけるっぽい
[DllImport("kernel32.dll", CharSet = CharSet.Unicode)][return: MarshalAs(UnmanagedType.Bool)]
static extern bool SetDllDirectory(string lpPathName);
[DllImport("SampleDll.dll")]
static extern void Hello([MarshalAs(UnmanagedType.LPStr)]string name);
static void Main(string[] args) {
 SetDllDirectory(Environment.Is64BitProcess ? "./dll/x64/" : "./dll/x86/");
 Hello("Hoge");
}
LoadLibrary呼んで./dll/x64/SampleDll.dllってやっといてもいけるみたいだけどこの方が管理しやすいと思う