我想爲Pinvoke和本地調用做一個非常基本的Hello世界。
我創建2個項目(一個用於DLL和一個用於萬能的Windows應用程序) 你好世界Pinvoke和本地調用
有一個方法,在一個單一的解決方案我的DLL(文件NativeCalls.cpp):
#include "pch.h"
#include "NativeCalls.h"
#include <stdio.h>
MYAPI void print_line(const char* str) {
printf("%s\n", str);
}
對事物的C#方,我有我NativeCalls.cs文件
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace MSSurfaceHubMonitoring
{
public static class NativeCalls
{
[DllImport("NativeCalls.dll")]
private static extern void print_line(string str);
public static void sayHelo()
{
print_line("Hello, PInvoke!");
}
}
}
在這一點上,我會構建並運行它,但得到一個錯誤,它無法找到DLL
但是我相信它是依賴,而不是DLL它的自我。我已將dll的輸出目錄更改爲UW應用程序所在的根目錄(\ bin \ x86),因此它確實應該找到它。所以就像我說我認爲它的依賴關係,而不是實際的DLL。
以下是我在Dependency Walker中 看到,但我已經安裝了所有的C++封裝,我可以得到我的手,所以我不知道如何獲得缺少的依存關係。此外,這只是一個hello世界,爲什麼我需要所有這些庫。
FYI 我的dll項目沒有被UW應用引用。林不知道這需要或不?我不這麼認爲,因爲這是一個運行時的東西,所以只要dll在那裏,它應該找到它並閱讀它。但是,如果不管我嘗試添加到項目作爲參考,我得到這個錯誤: