以前に似たようなことをしたことがあります。
Hello Worldが表示できたとのことですが、どういう実装方法でしょうか?
私の場合は
native c <-> c++/cli <-> ASP.Net(C#)
という形で間にc++/cliの薄いラッパーをかましました。
c内の構造体もクラスにし、値へのアクセスもプロパティを経由します。
lang
1public ref class DotNet
2{
3internal:
4 NATIVE *native;
5public:
6 DotNet() {
7 native = new NATIVE();
8 }
9 ~DotNet() {
10 if (native != NULL) {
11 delete native;
12 native = NULL;
13 }
14 }
15 property int IntValue {
16 int get() { return native->intValue; }
17 void set(int value) { native->intValue = value; }
18 }
19};
DllImportを使ってnative c <-> ASP.Netとする場合はcの型と.NETの型を正しく変換しないといけません。
https://msdn.microsoft.com/ja-jp/library/ac7ay120(v=vs.110).aspx
構造体も
lang
1[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
2public struct NATIVE
3{
4 [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]
5 public char[] charValue;
6 public int intValue;
7}
のように厳密に定義しないとうまくいかない場合があります。
cliを使う方が手間はかかるものの、コンパイル時にエラーが検出できるので、おすすめです。