summaryrefslogtreecommitdiffstats
path: root/source/slang/slang-ir-dll-import.cpp
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-07-25 10:08:28 -0700
committerGitHub <noreply@github.com>2022-07-25 10:08:28 -0700
commit9566e8af25f87ad034a984db9d847942e454a180 (patch)
tree2f295bf2bf60c39fd35b6b634b903d574b4ca99e /source/slang/slang-ir-dll-import.cpp
parent70147fc7ba6abe0b669363ed5adfd8d4d9545c3f (diff)
Allow `class` to implement COM interface, [DLLExport] (#2338)
* Allow `class` to implement COM interface, [DLLExport] * Fix [COM] usage in tests and examples with UUIDs. Co-authored-by: Yong He <yhe@nvidia.com>
Diffstat (limited to 'source/slang/slang-ir-dll-import.cpp')
-rw-r--r--source/slang/slang-ir-dll-import.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/source/slang/slang-ir-dll-import.cpp b/source/slang/slang-ir-dll-import.cpp
index b123dfb03..43ed9a102 100644
--- a/source/slang/slang-ir-dll-import.cpp
+++ b/source/slang/slang-ir-dll-import.cpp
@@ -123,11 +123,19 @@ struct DllImportContext
builder.emitIf(isUninitialized, trueBlock, afterBlock);
builder.setInsertInto(trueBlock);
- auto modulePtr = builder.emitCallInst(
- builder.getPtrType(builder.getVoidType()),
- getLoadDllFunc(),
- builder.getStringValue(dllImportDecoration->getLibraryName()));
+ IRInst* modulePtr;
+ if (dllImportDecoration->getLibraryName() == "")
+ {
+ modulePtr = builder.getIntValue(builder.getIntType(), 0);
+ }
+ else
+ {
+ modulePtr = builder.emitCallInst(
+ builder.getPtrType(builder.getVoidType()),
+ getLoadDllFunc(),
+ builder.getStringValue(dllImportDecoration->getLibraryName()));
+ }
IRInst* loadDllFuncArgs[] = {
modulePtr, builder.getStringValue(dllImportDecoration->getFunctionName())};
auto loadedNativeFuncPtr = builder.emitCallInst(