summaryrefslogtreecommitdiffstats
path: root/source/slang-rt/slang-rt.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-08-20 01:03:06 -0700
committerGitHub <noreply@github.com>2022-08-20 01:03:06 -0700
commitaf70651a4843b16dd24e14b5cedffe399ebeb862 (patch)
treea6aefd5db94a048114b9a8d7ed3f826533105fab /source/slang-rt/slang-rt.cpp
parent6412c4913b6a063438bb11863f2c154d3ae42dfe (diff)
Call `gfx` in slang program. (#2370)
Diffstat (limited to 'source/slang-rt/slang-rt.cpp')
-rw-r--r--source/slang-rt/slang-rt.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/source/slang-rt/slang-rt.cpp b/source/slang-rt/slang-rt.cpp
index 94699dfa0..49d4f2c9a 100644
--- a/source/slang-rt/slang-rt.cpp
+++ b/source/slang-rt/slang-rt.cpp
@@ -25,7 +25,7 @@ extern "C"
ComPtr<ISlangSharedLibrary> lib;
if (!slangRT_loadedLibraries.TryGetValue(modulePath, lib))
{
- if (DefaultSharedLibraryLoader::getSingleton()->loadPlatformSharedLibrary(
+ if (DefaultSharedLibraryLoader::getSingleton()->loadSharedLibrary(
modulePath.getBuffer(), lib.writeRef()) != SLANG_OK)
{
_slang_rt_abort("Failed to load DLL \"" + modulePath + "\"");
@@ -36,7 +36,7 @@ extern "C"
}
SLANG_RT_API void* SLANG_MCALL
- _slang_rt_load_dll_func(void* moduleHandle, Slang::String funcName)
+ _slang_rt_load_dll_func(void* moduleHandle, Slang::String funcName, uint32_t argSize)
{
if (moduleHandle == nullptr)
{
@@ -46,6 +46,13 @@ extern "C"
auto funcPtr = lib->findFuncByName(funcName.getBuffer());
if (!funcPtr)
{
+ // If failed, try stdcall mangled name.
+ StringBuilder sb;
+ sb << "_" << funcName << "@" << argSize;
+ funcPtr = lib->findFuncByName(sb.ToString().getBuffer());
+ }
+ if (!funcPtr)
+ {
_slang_rt_abort("Cannot find function \"" + funcName + "\" in loaded library.");
}
return (void*)funcPtr;