C# 嵌入c++;设置中的本机dll

C# 嵌入c++;设置中的本机dll,c#,c++,dll,C#,C++,Dll,我想在安装掩护限量版创建的文件中嵌入C++原生DLL。 提示:-我使用C++和C++原生DLL创建的应用程序 以下是我的例子:- extern "c" __declspec(dllexport) int function_c () { int a=10; return a; } 我的.net代码 public partial class Form1 : Form { [DllImport(@"C:\Users\bajwa\Documents\Visual Studio

我想在安装掩护限量版创建的文件中嵌入C++原生DLL。

提示:-我使用C++和C++原生DLL创建的应用程序 以下是我的例子:-

<我的C++ DLLYL代码< /P>
extern "c" __declspec(dllexport) int function_c ()
{
    int a=10;
    return a;
}
我的.net代码

public partial class Form1 : Form
{
    [DllImport(@"C:\Users\bajwa\Documents\Visual Studio 2012\Projects\c++dll\c++_dll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
    static extern int function_c();

    void csharp_function()
    {
        int result= function_c(); // calling c++ native  function
        MessageBox.Show(result);
    }

    private void button1_Click(object sender, EventArgs e)
    {
        csharp_function(); // calling c# function.
    }
}
当我在我的计算机上安装这个安装程序时,它运行得非常好。因为C++原生DLL在我的计算机上被放置在“C:\Buff\BajWa\Dea\VisualStudio 2012 \Base\C++ +DLL\C++ +DLL.DLL”/< < >但是,当我从那个位置删除C++本地DLL时,它显示了错误。

dll不在此位置


请帮助并解决我的问题。

我认为您只需要为导入的DLL使用相对路径。最简单的方法是将DLL复制到相对于可执行文件的已知文件夹(甚至可能是同一文件夹),然后使用该路径。因此,如果他们共享一个文件夹,您的代码可能会变成:

 [DllImport("c++_dll.dll", CharSet = CharSet.Ansi, CallingConvention = CallingConvention.Cdecl)]
static extern int function_c();

然后只需修改安装程序,将dll放置在正确的位置。要进行测试,只需更改代码并将dll移到上面,但它应该可以工作。

您可能需要编辑文章并对所有代码使用代码标记。